Bạn sẽ cần cả hai. Bộ đếm chương trình (PC) giữ địa chỉ của lệnh kế tiếp được thực thi, trong khi thanh ghi chỉ lệnh (IR) giữ lệnh được mã hóa. Khi tìm nạp lệnh, bộ đếm chương trình được tăng thêm một "giá trị địa chỉ" (đến vị trí của lệnh kế tiếp). Hướng dẫn sau đó được giải mã và thực hiện một cách thích hợp.
Lý do tại sao bạn cần cả hai là bởi vì nếu bạn chỉ có một bộ đếm chương trình và sử dụng nó cho cả hai mục đích bạn sẽ nhận được hệ thống rắc rối sau:
[Bắt đầu thực hiện chương trình]
- PC chứa 0x00000000 (nói đây là địa chỉ bắt đầu của chương trình trong bộ nhớ)
- Lệnh mã hóa được lấy từ bộ nhớ và được đặt vào PC.
- Hướng dẫn được giải mã và thực thi.
- Bây giờ là lúc để chuyển sang hướng dẫn tiếp theo để chúng tôi quay trở lại máy tính để xem địa chỉ của lệnh tiếp theo là gì. Tuy nhiên, chúng tôi gặp sự cố vì địa chỉ trước đó của máy tính đã bị xóa nên chúng tôi không biết hướng dẫn tiếp theo là ở đâu.
Vì vậy, chúng tôi cần một thanh ghi khác để giữ lệnh thực tế được tìm nạp từ bộ nhớ. Khi chúng tôi tìm nạp bộ nhớ đó, chúng tôi sẽ tăng PC để chúng tôi biết nơi tìm nạp hướng dẫn tiếp theo.
P.S. chiều rộng của thanh ghi thay đổi tùy thuộc vào kích thước từ của kiến trúc. Ví dụ, đối với bộ xử lý 32 bit, kích thước từ là 32 bit. Do đó, các thanh ghi trên CPU sẽ là 32 bit. Sổ đăng ký hướng dẫn không khác nhau về kích thước. Sự khác biệt là trong hành vi và cách giải thích. Tuy nhiên, các hướng dẫn được mã hóa dưới nhiều dạng khác nhau, chúng vẫn chiếm một thanh ghi 32 bit. Ví dụ, bộ xử lý Nios II từ Altera chứa 3 loại lệnh khác nhau, mỗi loại được mã hóa khác nhau.Xem trang 6 của ftp://ftp.altera.com/up/pub/Tutorials/DE2/Computer_Organization/tut_nios2_introduction.pdf
Bạn cũng có thể tìm hiểu thêm về cấu trúc của bộ xử lý Nios II từ liên kết ở trên. Nó là một CPU IP đơn giản. Tất nhiên Intel có đặc điểm kỹ thuật/thiết kế riêng của họ và nó sẽ thay đổi.
Nguồn
2013-04-09 14:50:56
Hoặc chính xác hơn, không thực sự là "đăng ký chỉ dẫn" vật lý, bởi vì việc tìm nạp mã trong các CPU siêu lớn hiện đại (esp. OOO) xảy ra theo khối lớn. Tôi không nghĩ rằng tôi đã bao giờ nghe thuật ngữ, và nó không được đề cập ngay cả trong mô tả chi tiết về cách x86 CPU làm việc nội bộ. ([Pdf vi mô của Agner Fog] (http://agner.org/optimize/) hoặc sách hướng dẫn tối ưu hóa của Intel hoặc các liên kết khác trong [tag wiki x86] (http://stackoverflow.com/tags/x86/info) Trừ khi bạn đang thực sự thiết kế phần cứng (đơn giản), nó có lẽ không phải là một thuật ngữ hữu ích để hiểu cách thức hoạt động của CPU. –