Chu trình lệnh trong CPU: Cách thức hoạt động của Tìm nạp, Giải mã và Thực thi

Chu trình lệnh trong CPU
Những gì một CPU hiện là thực thi các lệnh của một chương trình nằm trong bộ nhớ. Nhưng, bạn có biết rằng tất cả chúng đều tuân theo các quy tắc chung không? Tất cả chúng đều tuân theo cùng một chu kỳ lệnh, được chia thành ba giai đoạn riêng biệt được gọi là Fetch, Decode và Execute, được dịch là tìm nạp, giải mã và thực thi. Chúng tôi giải thích cách các giai đoạn này hoạt động và cách chúng được tổ chức.

Để đơn giản hóa và làm cho các khái niệm được giải thích trong bài viết này dễ hiểu hơn, chúng tôi đã quyết định mô tả một bộ xử lý cực kỳ đơn giản cho thời điểm hiện tại, vì vậy trong bài viết này, bạn sẽ thấy giải thích về chu trình lệnh là gì một cách tổng quát có thể áp dụng từ những bộ vi xử lý 8-bit đầu tiên đến những bộ xử lý phức tạp nhất hiện nay

Hình dung chu trình hướng dẫn

Điều khiển Unidad Ciclo Givingucción

Ở một góc độ nào đó, bộ vi xử lý không khác động cơ đốt trong, động cơ này luôn thực hiện quá trình nổ nhiên liệu liên tục theo các giai đoạn khác nhau, dù là động cơ 2 thì hay 4 thì. Lý do cho điều này là các bộ xử lý hoạt động ở ba giai đoạn khác nhau trong phiên bản đơn giản nhất của chúng, đó là:

  • Tìm nạp hoặc Chụp: Trong đó lệnh được bắt từ RAM và được sao chép vào bên trong bộ xử lý.
  • Giải mã hoặc Giải mã: Trong đó lệnh đã bắt trước đó được giải mã và gửi đến các đơn vị thực thi
  • Hành hình: Nơi lệnh được giải quyết và kết quả được ghi trong thanh ghi bên trong của bộ xử lý hoặc trong địa chỉ bộ nhớ của RAM

Ba giai đoạn này được thực hiện trong mọi bộ xử lý. Có một giai đoạn thứ tư, đó là Write-Back, là khi các đơn vị thực thi ghi kết quả, nhưng điều này thường được tính trong giai đoạn thực thi của chu trình lệnh.

Giai đoạn đầu tiên của chu kỳ hướng dẫn: Tìm nạp

Quy trình tìm nạp

Giai đoạn đầu tiên của chu trình hướng dẫn có trách nhiệm nắm bắt các hướng dẫn trong RAM bộ nhớ được gán cho bộ xử lý thông qua một loạt các đơn vị và thanh ghi như sau:

  1. Bộ đếm chương trình hoặc bộ đếm chương trình: Nó trỏ đến dòng bộ nhớ tiếp theo nơi đặt lệnh xử lý tiếp theo. Giá trị của nó được tăng lên 1 mỗi khi hoàn thành một chu kỳ lệnh hoàn chỉnh hoặc khi một lệnh nhảy thay đổi giá trị của bộ đếm chương trình.
  2. Đăng ký địa chỉ bộ nhớ: MAR sao chép nội dung của PC và gửi đến RAM thông qua các chân địa chỉ của CPU, được nối với các chân địa chỉ của chính RAM.
  3. Thanh ghi dữ liệu bộ nhớ hoặc thanh ghi dữ liệu bộ nhớ : Trong trường hợp CPU phải thực hiện đọc bộ nhớ, những gì MDR làm là sao chép nội dung của địa chỉ bộ nhớ đó vào một thanh ghi bên trong của CPU, đó là một thanh ghi chuyển tạm thời trước khi nội dung của nó được sao chép vào Thanh ghi lệnh. MDR, không giống như MAR, được kết nối với các chân dữ liệu của RAM chứ không phải các chân địa chỉ và trong trường hợp lệnh ghi, nội dung của những gì bạn muốn ghi trong RAM cũng được ghi trong MDR
  4. Đăng ký chỉ dẫn: Phần cuối cùng của giai đoạn tìm nạp là việc ghi lệnh vào thanh ghi lệnh, từ đó khối điều khiển bộ xử lý sẽ sao chép nội dung của nó cho giai đoạn thứ hai của chu kỳ lệnh.

4 giai đoạn con này xảy ra trong tất cả các bộ xử lý bất kể tiện ích, kiến ​​trúc và khả năng tương thích nhị phân của chúng hay cái mà chúng ta gọi là ISA.

bộ điều khiển

Bộ điều khiển

Khối điều khiển là bộ phận phức tạp nhất tồn tại trong bộ xử lý và các nhiệm vụ của nó như sau:

  • Chúng chịu trách nhiệm điều phối chuyển động và thứ tự dữ liệu di chuyển bên trong và bên ngoài bộ xử lý, cũng như các đơn vị con khác nhau phụ trách nó.
  • Nói chung, người ta coi các đơn vị của giai đoạn chụp hoặc Tìm nạp là một phần của phần cứng mà chúng ta gọi là đơn vị điều khiển và phần cứng này còn được gọi là Front-End của bộ xử lý.
  • Nó diễn giải các hướng dẫn và gửi chúng đến các đơn vị thực thi khác nhau mà nó được kết nối.
  • Nó được giao tiếp với các ALU khác nhau và các đơn vị thực thi của bộ xử lý hoạt động
  • Nó chịu trách nhiệm thu và giải mã các hướng dẫn, nhưng cũng để ghi kết quả vào các thanh ghi, bộ nhớ đệm hoặc trong địa chỉ tương ứng của RAM.

Opcode-Chế độ-Địa chỉ

Những gì đơn vị điều khiển làm là giải mã các hướng dẫn và nó thực hiện điều này bởi vì mỗi lệnh thực sự là một loại câu trong đó động từ đi trước rồi đến tân ngữ hoặc tân ngữ trực tiếp mà hành động được thực hiện. Chủ thể cuối cùng bị loại bỏ trong ngôn ngữ nội bộ này của máy tính bởi thực tế là nó được hiểu rằng chính máy tính thực thi nó, vì vậy mỗi số bit là một câu trong đó 1 và 0 đầu tiên tương ứng với hành động và các tiếp theo là dữ liệu hoặc vị trí của dữ liệu được thao tác.

Giai đoạn thứ hai: Giải mã

Decodificación Givingucciones

Có nhiều loại lệnh khác nhau và không phải tất cả chúng đều làm giống nhau, vì vậy tùy thuộc vào loại lệnh mà chúng ta cần biết đơn vị thực thi nào sẽ được gửi đến và cách thực hiện cổ điển nhất là thông qua cái mà chúng ta gọi là bộ giải mã. , lấy từng lệnh, phân chia nội bộ theo opcode hoặc lệnh và dữ liệu hoặc địa chỉ bộ nhớ nơi nó nằm.

Ví dụ trong sơ đồ trên chúng ta có sơ đồ của một bộ xử lý chỉ có 8 lệnh, có thể được mã hóa chỉ trong 3 bit. Mỗi một trong các hướng dẫn, sau khi được giải mã, sẽ được gửi đến các đơn vị thực thi khác nhau sẽ giải quyết chúng.

Chu trình lệnh này là chu trình phức tạp nhất và là chu trình xác định kiểu kiến ​​trúc. Tùy thuộc vào việc chúng ta có một bộ lệnh giảm bớt hoặc phức tạp, điều này sẽ ảnh hưởng đến bản chất của khối điều khiển, tùy thuộc vào định dạng của lệnh hoặc số lượng lệnh được xử lý cùng lúc ở giai đoạn giải mã và do đó khối điều khiển sẽ có một bản chất khác nhau. khác.

Cách dễ nhất để hình dung những gì sẽ xảy ra là nghĩ về các chỉ dẫn khi các đoàn tàu lưu thông qua một mạng lưới đường sắt phức tạp và bộ phận điều khiển hướng chúng đến một ga đầu cuối, đơn vị thực hiện sẽ chịu trách nhiệm giải quyết chỉ dẫn.

Giai đoạn thứ ba: Thực thi

ALU 1 bit

Giai đoạn cuối cùng là thực thi các lệnh, trong giai đoạn này các lệnh được giải quyết, nhưng không phải tất cả các loại lệnh đều được giải quyết theo cùng một cách, vì cách sử dụng phần cứng sẽ phụ thuộc vào chức năng của từng loại lệnh. chúng, nói chung, chúng tôi có bốn loại hướng dẫn:

  • Hướng dẫn chuyển động bit: Trong đó thứ tự của các bit chứa dữ liệu được thao tác.
  • Hướng dẫn số học: Khi các phép toán và logic được thực hiện, chúng được giải quyết trong cái gọi là ALU hoặc đơn vị logic số học
  • Hướng dẫn nhảy: Trong đó giá trị tiếp theo của bộ đếm chương trình được thay đổi, điều này cho phép mã được sử dụng một cách đệ quy.
  • Hướng dẫn vào bộ nhớ: Chúng là nơi mà bộ xử lý đọc và ghi thông tin từ bộ nhớ hệ thống.

Điểm khác là các định dạng lệnh, vì một lệnh có thể được áp dụng cho một dữ liệu, vô hướng hoặc một số dữ liệu cùng một lúc, mà chúng ta gọi là SIMD. Để kết thúc và tùy thuộc vào định dạng dữ liệu, có nhiều loại ALU khác nhau để thực hiện các lệnh số học, ví dụ chúng ta có các đơn vị số nguyên và dấu phẩy động là các đơn vị phân biệt ngày nay.

Khi lệnh đã được hoàn thành, kết quả được ghi vào một địa chỉ bộ nhớ cụ thể và lệnh tiếp theo được thực thi. Một số lệnh không thao tác các giá trị bộ nhớ mà là các thanh ghi nhất định. Do đó, thanh ghi bộ đếm chương trình được sửa đổi bởi các lệnh nhảy, nếu chúng ta muốn đọc hoặc ghi dữ liệu thì các thanh ghi MAR và MDR được thao tác.