Ngân hàng có nghĩa là gì khi áp dụng cho đăng ký?


13

Câu trả lời này cho một câu hỏi trên StackOverflow về ý nghĩa của ngân hàng trong bối cảnh các thanh ghi bị ràng buộc của ARM chỉ ra rằng có một số nhầm lẫn về ý nghĩa của ngân hàng khi áp dụng cho các thanh ghi.

Ngân hàng có nghĩa là gì đối với đăng ký?

Câu trả lời:


16

Từ ngân hàng được sử dụng theo hai nghĩa khác nhau khi áp dụng cho các thanh ghi.

Đăng ký đánh dấu để xử lý ngắt

Ý nghĩa của câu hỏi StackOverflow liên quan đến tương tự như việc sử dụng chuyển đổi ngân hàng (bộ nhớ) (được sử dụng bởi một số bộ xử lý 8 bit và 16 bit) trong chức năng . Tên của một tập hợp các thanh ghi được ánh xạ tới một tập hợp các thanh ghi vật lý khác nhau. ARMv7 cung cấp thêm một ngân hàng cho 7 trong số 16 GPR của mình và năm ngân hàng nữa cho thanh ghi con trỏ ngăn xếp và thanh ghi liên kết (ARM sử dụng thanh ghi liên kết để lưu PC được sử dụng để quay lại từ ngắt). Itanium cung cấp thêm một ngân hàng cho 16 trong số 31 GPR tĩnh. (MIPS cung cấp toàn bộ 31 GPR, gọi chúng là "bộ thanh ghi bóng".)

Không giống như chuyển đổi ngân hàng bộ nhớ, mục đích chính của loại hình ngân hàng đăng ký này (thường) không phải là mở rộng lưu trữ theo địa chỉ mà là cung cấp xử lý ngắt nhanh hơn bằng cách tránh yêu cầu lưu giá trị đăng ký, tải giá trị được sử dụng bởi trình xử lý ngắt và khôi phục bản gốc đăng ký giá trị và để đơn giản hóa việc xử lý ngắt.

(Sử dụng ngăn xếp của ứng dụng để lưu trạng thái đăng ký sẽ mở ra khả năng tràn bộ nhớ được phân bổ cho ngăn xếp này, tạo ra một ngoại lệ sau đó phải xử lý lưu trạng thái bằng cách nào đó. Tệ hơn, nếu trang bộ nhớ vượt quá giới hạn của ngăn xếp có thể ghi được đặc quyền leo thang của trình xử lý ngắt nhưng không phải bởi ứng dụng, sau đó ứng dụng đang ghi một cách hiệu quả vào một trang mà nó không có quyền ghi. Một số ABI đã tránh vấn đề này bằng cách xác định một hoặc nhiều thanh ghi là biến động qua các ngắt. Điều này cho phép ngắt xử lý để tải một con trỏ để lưu trạng thái mà không ghi trạng thái ứng dụng, nhưng không giống như các thanh ghi bị đánh dấu, các thanh ghi biến động ngắt được xác định bằng phần mềm như vậy không thể được tin cậy để không bị thay đổi bởi phần mềm ứng dụng.)

(Sử dụng các ngân hàng đăng ký như cửa sổ cố định đã được đề xuất để mở rộng số lượng đăng ký có sẵn, ví dụ: "Tăng số lượng đăng ký hiệu quả trong Bộ xử lý công suất thấp bằng cách sử dụng tệp đăng ký cửa sổ", Rajiv A. Ravindran et al., 2003. Người ta cũng có thể lưu ý sự tương tự với ngăn xếp đăng ký được sử dụng để tránh lưu thanh ghi và khôi phục chi phí cho các lệnh gọi hàm như trong Itanium và SPARC [sử dụng thuật ngữ "cửa sổ đăng ký"], mặc dù các cơ chế này thường thay đổi tên đăng ký thay vì hoán đổi chúng ngoài.)

Về phần cứng, các thanh ghi có thể được thực hiện bằng cách đổi tên các thanh ghi trong giải mã lệnh. Đối với hệ thống ngân hàng tương đối phức tạp của ARM, đây có lẽ sẽ là cơ chế ưa thích. Đối với một hệ thống ngân hàng đơn giản như hệ thống ngân hàng mà Itanium sử dụng với một ngân hàng phụ duy nhất có sức mạnh bằng hai số lượng đăng ký, có thể thực tế khi kết hợp việc đổi tên thành lập chỉ mục của tệp đăng ký. (Tất nhiên, điều này sẽ không tương thích với một số hình thức đổi tên được sử dụng để hỗ trợ thực hiện không theo thứ tự.)

Bằng cách nhận ra rằng các ngân hàng khác nhau không được truy cập cùng một lúc, tối ưu hóa thông minh bằng cách sử dụng cơ chế này có thể giảm chi phí khu vực (giới hạn dây) của tệp đăng ký được chuyển cao bằng cách sử dụng "thanh ghi 3D". . Tập tin đăng ký 128 từ trên bộ xử lý gia đình Itanium lõi kép ", Fetzer et al., 2005.)

Ngân hàng để tăng số lượng truy cập có thể

Ý nghĩa thứ hai trong đó thuật ngữ ngân hàng được sử dụng cho các thanh ghi đề cập đến việc chia một tập hợp các thanh ghi thành các nhóm (ngân hàng) mà mỗi nhóm có thể được truy cập song song. Sử dụng bốn ngân hàng làm tăng số lượng truy cập tối đa được hỗ trợ bởi hệ số bốn, cho phép mỗi ngân hàng hỗ trợ ít cổng truy cập hơn (giảm diện tích và sử dụng năng lượng) cho số lượng truy cập hiệu quả nhất định. Tuy nhiên, trong phạm vi các truy cập trong một chu kỳ nhất định không được phân bổ đều giữa các ngân hàng, số lượng truy cập tối đa sẽ không đạt được. Ngay cả với một số lượng lớn các ngân hàng liên quan đến số lượng truy cập mong muốn, trong trường hợp xấu nhất, trong trường hợp xấu nhất, có thể giới hạn số lượng truy cập thực tế ở số lượng cổng được cung cấp bởi một ngân hàng.

Đã có nhiều bài báo học thuật về các tệp đăng ký bị đánh cắp ( tìm kiếm Google Scholar) và một số kỹ thuật chung đã được đề xuất để giảm tác động của xung đột ngân hàng. Kỹ thuật rõ ràng nhất là hướng dẫn đệm (như được thực hiện để thực hiện không theo thứ tự) cung cấp một số trung bình thống kê về xung đột ngân hàng. Cũng có thể đọc toán hạng đăng ký trước khi lệnh sẵn sàng thực thi (ví dụ: nếu toán hạng khác chưa sẵn sàng hoặc thực thi trì hoãn nguy cơ cấu trúc). Phân bổ sổ đăng ký cho các ngân hàng có thể khai thác thông tin về việc sử dụng dự kiến ​​để giảm khả năng xảy ra xung đột. (Phần mềm có thể hỗ trợ bằng cách ưu tiên sử dụng các thanh ghi theo cách dự kiến.) Sử dụng tên thanh ghi vật lý ảo, có thể trì hoãn việc phân bổ tên thanh ghi vật lý (và do đó là ngân hàng) cho đến khi giá trị được lưu trữ trong thanh ghi;

Loại ngân hàng này đôi khi được gọi là đa giả vì nó cung cấp ảo tưởng về số lượng cổng truy cập lớn hơn. Kỹ thuật này thường được sử dụng cho bộ nhớ cache vì cấu trúc vật lý thường được phân vùng thành các mảng bộ nhớ riêng vì các lý do khác.

(Một thay thế cho ngân hàng như vậy là sao chép tệp đăng ký. Sử dụng hai bản sao của tệp đăng ký cho phép mỗi bản sao yêu cầu một nửa số cổng đọc, mặc dù cùng một số cổng ghi. và thường được sử dụng trong các bộ xử lý hiệu suất cao.)

Tóm lược

Có thể hữu ích để phân biệt hai loại ngân hàng này là ngân hàng tạm thời trong đó lựa chọn ngân hàng được trải đều theo thời gian (như các thanh ghi bị ràng buộc của ARM để gián đoạn nhanh) và ngân hàng không gian trong đó truy cập ngân hàng có thể đồng thời theo thời gian nhưng được phân phối theo không gian.

Ngân hàng tạm thời thường được tiếp xúc với phần mềm và được sử dụng để giảm chi phí (và độ phức tạp) của các ngắt. (Về mặt khái niệm, chuyển đổi luồng trong bộ xử lý Switch-on-Event-MultiThreaded rất giống với xử lý ngắt và có thể sử dụng các cơ chế tương tự để giảm chi phí.)

Ngân hàng không gian ít thường xuyên là một phần của ISA (mặc dù Itanium yêu cầu tải và lưu trữ các cặp thanh ghi dấu phẩy động để sử dụng số thanh ghi chẵn và lẻ - không được đảm bảo khi sử dụng xoay vòng thanh ghi - cho phép thiết kế hai ngân hàng tầm thường cung cấp thêm đăng ký yêu cầu truy cập tệp) và được sử dụng để giảm chi phí cung cấp số lượng truy cập đăng ký lớn hơn trong mỗi chu kỳ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.