Chương IV Chương trình và thực hiện chương trình
6. Lệnh hai địa chỉ
Ở phần trên chúng ta đã xét các lệnh trong đó chỉ có một thành phần là
địa chỉ. Các lệnh này được gọi là các lệnh một địa chỉ. Các máy tính hiện
nay có thể hiểu và thực hiện được các lệnh hai địa chỉ. Lệnh hai địa chỉ gồm ba phần: 1. Mã lệnh 2. Địa chỉ thứ 1 3. Địa chỉ thứ 2 RET PCL (SP) PCH (SP + 1) SP SP + 2
trong đó mã lệnh là phép tính hay thao tác cần thực hiện, địa chỉ thứ nhất là địa chỉ chứa toán hạng, còn địa chỉ thứ hai là địa chỉ lưu kết quả xử lý.
Trong máy tính, ngoài thanh ghi gộp thường có nhiều thanh ghi, được gọi là các thanh ghi đa năng. Các thanh ghi này cũng được sử dụng để lưu dữ liệu phục vụ cho quá trình tính toán và xử lý.
Các thanh ghi đa năng được gán tên để phân biệt. Số bit của các thanh ghi trong các bộ vi xử lý thường là 16 hoặc 32.
6.1. Các chế độ thực hiện lệnh hai địa chỉ
Các lệnh hai địa chỉ có thể được thực hiện trong các chế độ sau: Trao đổi dữ liệu giữa các ô nhớ trong bộ nhớ (Bộ nhớ - bộ nhớ)
Ví dụ 1: Máy tính thực hiện thao tác: Cộng nội dung ô nhớ có địa chỉ 963H vào nội dung ô nhớ có địa chỉ 492H
Trao đổi dữ liệu giữa thanh ghi đa năng và bộ nhớ (Thanh ghi
đa năng - bộ nhớ)
Trao đổi dữ liệu giữa bộ nhớ và các thanh ghi đa năng (Bộ nhớ
- thanh ghi đa năng)
Cuối cùng là trao đổi dữ liệu giữa thanh ghi đa năng và thanh
ghi đa năng
6.2. Kiến trúc RISC và CISC
Có thể phân kiến trúc máy tính ra hai lớp cơ bản
Máy tính với tập hợp lệnh tối thiểu (RISC – Reduced Instruction
Set Computer) và
Máy tính với tập hợp lệnh phức hợp (CISC – Complex Instruction
Set Computer)
Các máy tính trước kia thường có một số ít các lệnh đơn giản vì công nghệ ống chân không và bán dẫn lúc bấy giờ quá đắt, kềnh càng và phát nhiều nhiệt, chưa cho phép thiết kế các lệnh phức hợp.
Khi công nghệ đạt được những tiến bộ nhất định, máy tính với kiến trúc tập hợp lệnh phức hợp (CISC) được thiết kế để có thêm nhiều lệnh và các lệnh càng ngày càng phức tạp. Chúng được thiết kế để hỗ trợ hệ điều hành và các trình biên dịch. Một lệnh thậm chí có thể thực hiện cả một chương trình con.
Nguyễn Trung Đồng – Tel 0983 410 866
Ý tưởng cơ bản để thiết kế các máy tính này là nếu lệnh càng phức hợp thì tập hợp các lệnh cơ bản càng ít và như vậy ít lệnh sẽ được đọc từ bộ nhớ hơn và do đó làm tăng tốc độ xử lý của CPU. Tuy nhiên các lệnh phức hợp lại đòi hỏi thêm linh kiện điện tử, làm cho bộ vi xử lý kềnh càng hơn và cuối cùng lại làm chậm tốc độ của CPU. Trong khi đó nhiều lệnh phức hợp lại hầu như không được sử dụng trong thực tế.
Vì thế lớp các máy tính có kiến trúc với tập hợp lệnh tối thiểu RISC xuất hiện với tư tưởng: chứa tập hợp một số ít các lệnh được chọn lọc kỹ lưỡng và các lệnh được thể hiện vật lý một cách đơn giản nhất có thể. Chương trình có thể sử dụng nhiều lệnh, nhưng hiệu suất tổng thể của máy tính tăng lên.
6.3. Kiến trúc xử lý song song
Ở một chừng mực nào đó, có thể tổ chức việc thực hiện lệnh nhờ vào kiến trúc có nhiều đơn vị số học và Logic trong một CPU. Mỗi ALU có thể thực hiện một thao tác đơn với tốc đọ cao. Ví dụ, ALU thực hiện phép cộng, ALU thực hiện phép trừ, ALU thực hiện phép nhân và ALU thực hiện phép chia. Trong trường hợp này, CU sau khi giải mã lệnh sẽ điều khiển một trong các ALU thực hiện lệnh, đồng thời CU nhận về lệnh tiếp theo để chuyển cho các ALU khác thực hiện. Cách thức này sẽ đạt hiệu quả cao khi thời gian thực hiện lệnh dài hơn nhiều so với thao tác lấy lệnh từ bộ nhớ. Trong hình vẽ, giả sử ta có 5 ALU, hai ALU thực hiện phép cộng, các ALU còn lại thực hiện các phép trừ, nhân và chia.
Giả sử một CPU có 5 đơn vị xử lý thực hiện các thao tác như hình vẽ dưới, ký hiệu là ĐVXL1 đến ĐVXL5. Khởi đầu, ĐVXL1 lấy về lệnh thứ nhất từ bộ nhớ và công việc chiếm một khoảng thời gian là t1. Trong khoảng
thời gian t2 llệnh đó được chuyển cho ĐVXL2 để giải mã, trong lúc ĐVXL1
Pr3 Pr2
Pr1
Các thanh ghi
lấy về lệnh kế tiếp. trong mỗi khoảng thời gian tiếp theo, ĐVXL1 sẽ lấy về một lệnh mới, các lệnh đã nhận sẽ chuyển cho các đơn vị xử lý kế tiếp. Kiểu kiến trúc này được gọi là Kiến trúc đường ống (Pipeline Machine). Thấy rằng, để thực hiện 1 lệnh cần một thời gian là T = t1 + t2 + t3 + t4 + t5. Tuy nhiên, vớ cách kiến trúc này, trong cùng thời gian đó, CPU thực hiện được 5 lệnh, và có thể coi là tốc độ xử lý đã tăng nhanh gấp 5 lần.
Insstruction Fetch Instruction Decode Generate Operand Address Operrand Fetch Execute IF ID GOA OF EX t1 t2 t3 t4 t5
Có thể mô tả phương thức hoạt động đường ống trong hình vẽ sau:
P1 1 2 3 4 5 6 7 8 9 P1: Đơn vị lấy lệnh IF
P2 1 2 3 4 5 6 7 8 P2: Đơn vị giải mã lệnh ID
P3 1 2 3 4 5 6 7 P3: Đơn vị tạo địa chỉ toán hạng GOA
P4 1 2 3 4 5 6 P4: Đơn vị lấy dữ liệu OF
P5 1 2 3 4 5 P5: Đơn vị thực hiện phép toán EX
1 2 3 4 5 6 7 8 9 t