Tải bản đầy đủ (.docx) (37 trang)

Sử dụng ngôn ngữ HDL mô phỏng MIPS PIPELINE

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (943.17 KB, 37 trang )

GVHD: Th.s Tạ Kim Huệ
Mục lục
Phần 1: Giới thiệu ý tưởng và xác định chỉ tiêu kỹ thuật của kiến
trúc MIPS Pepiline
1.1 Phân tích nhu cầu và đặc điểm nổi bật trong kiến trúc MIPS Pipeline
 Giới thiệu chung về kiến trúc MIPS- nhu cầu cần thiết cho sự ra đời của kiến trúc
MIPS pipeline
* MIPS : Microprocessor without Interlocked Pipeline Stage là một kiến trúc vi xử
lý được phát triển bởi hãng MIPS Technologies và là kiến trúc chiếm đến 1/3 số
lượng chip sản xuất trên nền kiến trúc RISC.
* Bộ xử lí MIPS đầu tiên được nghiên cứu vào năm 1981 với mục đích cơ bản là
nhằm tăng đột xuất hiệu năng thông qua sử dụng một đường ống lệnh ( pileline
instructions). Thiết kế theo pipeline làm giảm đáng kể thời gian rảnh rỗi của CPU
khi thực hiện liên tiếp các câu lệnh.
* Khó khăn trong quá trình tìm hiểu thiết kế: theo phương pháp đường ống lệnh nó
yêu cầu một khóa đồng bộ (interlocks) được cài đặt để chắc chắn rằng các câu
1
GVHD: Th.s Tạ Kim Huệ
lệnh chiếm nhiều chu kì đồng hồ để thực hiện sẽ dừng đường ống lại để nạp nhiều
dữ liệu hơn. Những khóa đồng bộ này cần một thời gian lớn để cài đặt và được
cho là rào cản chính trong việc tăng tốc độ xử lí trong tương lai.
* Yêu cầu đặt ra trong quá trình thiết kế: yêu cầu tất cả các câu lệnh phải được hoàn
thành trong 1 chu kì xung nhịp nhờ thế lạo bỏ được sự cần thiết của khóa đồng bộ.
Thiết kế này đã loại bỏ được một số câu lệnh hữu dụng, đáng kể nhất là các lệnh
nhân, chia yêu cầu nhiều bước nhưng nó cho thấy hiệu suất tổng thể của hệ thống
tăng lên rõ rệt vì các vi xử lý có thể chạy ở xung nhịp lớn hơn rất nhiều.
* Lịch sử phát triển sau đó:
* Thiết kế đầu tiên ra đời vào năm 1985: R2000 sau đó phát triển tiếp R3000 vào
năm 1998. Những CPU 32bit này tồn tại trong suốt những năm 1980 và được
sử dụng chủ yếu trong các dòng máy chủ SGI.
* Năm 1991 MIPS cho ra đời bộ vi xử lý 64 bit đầu tiên R4000


 Đặc điểm nổi bật-nguyên tắc thiết kế trong kiến trúc MIPS pipeline
* Tính đơn giản quan trọng hơn tính quy tắc (Simplicity favors regularity)
* Chỉ thị kích thước cố định (32bit)
* Ít định dạng chỉ thị (3 loại định dạng)
* Mã lệnh ở vị trí cố định (6 bit đầu)
* Nhỏ hơn thì nhanh hơn
* Số chỉ thị giới hạn
* Số thanh ghi giới hạn
* Số chế độ địa chỉ giói hạn
* Tăng tốc trong các trường hợp thông dụng
* Các toán hạng số học lấy từ thanh ghi ( máy tính dựa trên cơ chế load-store)
* Các chỉ thị có thể chứa toán hạng trực tiếp
* Thiết kế đòi hỏi sự thỏa hiệp
* Ba loại chỉ thị định dạng
2
GVHD: Th.s Tạ Kim Huệ
* Nguyên tắc hoạt động của Pipeline
* Chia nhỏ các lệnh thành các giai đoạn đường ống
* Bắt đầu lệnh tiếp theo trước khi lệnh hiện tại kết thúc.
 Lên ý tưởng cho đề tài
* Mục đích là thiết kế một chip MIPS pipeline bằng ngôn ngữ mô tả Verilog HDL.
 Các sản phẩm đã có trên thị trường (Các công trình bài báo nghiên cứu đã có và
có liên quan).
Các dòng vi xử lý thương mại MIPS đã được sản xuất:
R2000 R3000 R4000. Ngoài ra còn các họ R4200, R4300, VR4300, R4300i, R4600
“Orion”, R4700 “Orion”, R5650, R5000, R5000FTU, RM7000, RM9000 Các bộ xử lý
này được sử dụng rất rộng rãi : Các máy Nitendo 64, Cisco routers, WebTV set-top Box
(Hiện nay là Micrisoft TV)…R8000( 1994),R10000 (1995),R16000, R16000A, R6000.
 Các chỉ tiêu kỹ thuật của sản phẩm
Các bộ xử lí sẽ chỉ xử lí được tập các lệnh thuộc về kiến trúc bộ lệnh của nó (tức là

các lệnh đã được định sẵn trong bộ xử lí đó). Vì thế các hệ thống nhúng và một số loại
siêu máy tính thuộc về kiến trúc bộ lệnh MIPS thì chỉ có thể thực hiện các chương trình
thuộc kiến trúc bộ lệnh này (tức là chỉ thực thi được các chương trình viết bằng bộ lệnh
MIPS). Đó là lí do chúng ta cần nghiên cứu về MIPS.
Đến năm 1995 thì MIPS10000 ra đời đã mang lại thành công lớn cho sự phát triển
về công nghệ MIPS.Trong khuôn khổ của đề tài này, chúng ta hi vọng đạt được một cái
nhìn tổng quát nhất về kiến trúc MIPS để từ đó phát triển hơn. Nên sản phẩm tạo ra chỉ
mang những chức năng cơ bản nhất của MIPS.
 Chức năng sản phẩm
Mục đích của bản thiết kế, nhằm tạo ra một bộ xử lý MIPS, nhằm tăng đột xuất
hiệu năng thông qua sử dụng đường ống lệnh (pipeline instructions). Thiết kế pipeline
3
GVHD: Th.s Tạ Kim Huệ
làm giảm đáng kể thời gian rảnh rỗi của CPU khi thực hiện liên tiếp các câu lệnh. Bộ xử
lý này chỉ có khả năngthực hiện được một số lệnh cơ bản.
Kiến trúc tập lệnh này hộ trợ thực hiện:
* Các phép toán số học: cộng, trừ, nhân…
* Truy cập bộ nhớ với 2 chỉ thị: lw, sw.
* Lưu trữ, đọc và ghi byte dữ liệu
* Lệnh dịch, logic số học, nhảy (có điều kiện và không có điều kiện).
 Thông số đầu vào,ra
Thông s ố Ý nghĩa
Input clk Tín hiệu đồng hồ hệ thống
reset Tín hiệu reset không đồng bộ
instruction Mã lệnh
readData Dữ liệu vào
Output writeData Dữ liệu ra
aluOut Dữ liệu ra của khối ALU
selectWidth Chọn số bit của dữ liệu đọc và ghi
PC Địa chỉ lệnh tiếp theo

memWrite Tín hiệu Write Enable
memRead Tín hiệu Read Enable
1.2.Sơ đồ cấu trúc bản thiết kế
4
GVHD: Th.s Tạ Kim Huệ
Hình 1.1. Sơ đồ tổng quát MIPS pipeline
 Phân tích các thành phần cấu tạo.
Khác với chip Single-cycle khi các lệnh đều được thực hiện xong trong một chu kì
máy, chip pipeline chia một câu lệnh ra thành 5 bước (steps):
* Nạp lệnh và cập nhập giá trị PC (Instruction Fetch – IF)
* Đọc thanh ghi và giải mã lệnh ( Intruction Decode – ID)
* Thực hiện lệnh R, tính địa chỉ bộ nhớ(Execution – EX)
* Đọc hoặc ghi dữ liệu trên bộ nhớ dữ liệu (Memory access –MEM)
* Ghi kết quả vào tệp thanh ghi (Write back – WB)
Câu lệnh sau không cần đợi câu lệnh trước hoàn tất mới bắt đầu thực hiện mà mỗi
step sẽ được thực hiện liên tiếp, do đó cải thiện đáng kể về tốc độ thực hiện các
chương trình
Các bước thực hiện một câu lệnh:
* Đọc lệnh từ bộ nhớ ( Instruction Fetch – IF)
* Sử dụng địa chỉ lưu trong thanh ghi PC để giải mã ra mã máy của câu lệnh tiếp
theo và lưu vào thanh ghi trung gian IF/ID.
* Giá trị PC được cộng thêm 4 và lưu vào thanh ghi trung gian IF/ID
* Giải mã lệnh và đọc các thanh ghi (Intruction Decode – ID)
5
GVHD: Th.s Tạ Kim Huệ
* Sử dụng mã máy của câu lệnh lưu trong thanh ghi IF/ID làm đầu vào cho khối
Regfile
* Khối Control sử dụng phần opcode của mã máy của câu lệnh để giải mã thành
các tín hiệu điều khiển, ngoài tín hiệu SignEx được sử dụng cho khối mở rộng,
các tín hiệu khác được lưu vào thanh ghi trung gian ID/EX

* Đọc các thanh ghi Rs, Rt từ bộ thanh ghi và lưu vào thanh ghi trung gian
ID/EX
* Khối mở rộng sử dụng tín hiệu SignEx từ khối Control để mở rộng dấu hay mở
rộng zero của 16 bit thấp của mã máy thành 32 bit và lưu vào thanh ghi ID/EX
* Địa chỉ các thanh ghi Rs, Rt, Rd được lưu vào thanh ghi ID/EX
* Tính toán kết quả của câu lệnh hoặc địa chỉ (Execution – EX)
* Khối ALU sử dụng các đầu vào đã được lưu trong thanh ghi ID/EX để tính
toán và lưu kết quả vào thanh ghi trung gian EX/MEM
* Một bộ mux được dùng để lựa chọn thanh ghi đích từ 2 thanh ghi Rt, Rd và lưu
địa chỉ vào thanh ghi EX/MEM
* Địa chỉ mới của PC sau câu lệnh BNE cũng được tính toán trong khối này. Một
số bộ mux được dùng để lựa chọn giá trị mới cho PC từ các câu lệnh rẽ nhánh
BNE, J, JR.
* Các tín hiệu điều khiển MemWrite, MemtoReg và RegWrite được lưu tiếp vào
thanh ghi EX/MEM
* Đọc hoặc ghi dữ liệu trên bộ nhớ dữ liệu ( Memory access – MEM)
* Sử dụng kết quả tính toán từ khối ALU và tín hiệu điều khiển MemWrite từ
thanh ghi EX/MEM để thực hiện đọc hoặc ghi vào bộ nhớ dữ liệu. Kết quả đọc
ghi vào thanh ghi trung gian MEM/WB.
* Các giá trị đầu ra của ALU, địa chỉ thanh ghi đích cùng với 2 tín hiệu điều
khiển MemtoReg và RegWrite được ghi lại vào thanh ghi MEM/WB
* Ghi kết quả vào thanh ghi ( Write back – WB)
* Sử dụng tín hiệu MemtoReg từ thanh ghi MEM/WB để lựa chọn dữ liệu cần
ghi vào thanh ghi.
* Sử dụng địa chỉ thanh ghi đích và tín hiệu cho phép ghi RegWrite để thực hiện
công việc ghi dữ liệu vào bộ thanh ghi.
6
GVHD: Th.s Tạ Kim Huệ
Phần 2.Phân tích cấu trúc
 Phân chia chức năng

Trong quá trình thiết kế, MIPS được chia thành các khối, cụ thể chức năng và phân chia
các khối như sau:
2.1.Chức năng khối Instruction Memory
* Dùng để lưu trữ lệnh dưới dạng mã máy (nhị phân).
* Kích thước mỗi lệnh khi dịch ra mã máy là 32 bits, tốn 32 bits để lưu trữ.
* Đầu vào bộ nhớ lệnh là địa chỉ lệnh cần lấy, đầu ra là mã máy của câu lệnh tương
ứng lấy được.
7
GVHD: Th.s Tạ Kim Huệ
Hình 2.2: Khối Instruction Memory
* Khối bộ nhớ lệnh Instruction Mem chỉ có
một cổng đọc , khối này nhận một đầu
vào địa chỉ 32 bit A và đầu ra là dữ liệu
RD 32 bit (dữ liệu ở đây là lệnh của
chương trình).
* Khối MUX 2-1, thực hiện chức năng chon
tín hiệu đầu vào cho bộ đếm chương trình
PC
* Khối tăng PC, để đếm địa chỉ trong quá
trình nạp lệnh
8
GVHD: Th.s Tạ Kim Huệ
* Đầu vào của bộ nhớ lệnh chính là đầu ra
của bộ đếm chương trình Program
Counter PC. Bộ đếm chương trình là một
thanh ghi 32 bit, đầu ra của khối này PCF
trỏ tới lệnh hiện tại. Đầu vào PC’ là địa
chỉ của lệnh tiếp theo cần thực thi.
*
* Khối Data Mem có một cổng đọc hoặc ghi. Nếu tín hiệu cho phép ghi WE=1 thì dữ

liệu WD sẽ được viết vào bộ nhớ dữ liệu tại địa chỉ tương ứng A tại sườn lên của
xung clock. Nếu WE =0 dữ liệu sẽ được đọc ra RD.
2.2.Chức năng khối Register File
Hình 2.3: Register File
* Tệp thanh ghi fie gồm 32 thanh ghi, mỗi thanh ghi 32 bit. Khối này có 2 cổng đọc
và 1 cổng ghi. Hai cổng đọc nhận các đầu vào địa chỉ 5 bit (ứng với 32 thanh ghi)
A1, A2. Đầu ra là dữ liệu RD1, RD2 tương ứng với các đầu vào địa chỉ A1, A2.
* Cổng ghi nhận đầu vào địa chỉ A3 (5 bit ) và đầu vào của dữ liệu cần ghi 32 bit
WD3.
* Ngoài ra còn có các tín hiệu clock và đầu vào cho phép ghi Write Enable WE. Nếu
tín hiệu WE ở mức cao 1, dữ liệu WD3 sẽ được ghi vào trong thanh ghi file tương
ứng tại sườn lên của xung clock.
9
GVHD: Th.s Tạ Kim Huệ
2.3.Chức năng khối ALU và ALU control
Hình 2.4: ALU
* Khối ALU có 2 đầu vào là các toán hạng SrcA và SrcB 32 bit, một đầu ra
ALUResult 32 bit. Ngoài ra ALU còn có một đầu vào điều khiển ALUControl 4
bit để xác định các phép toán cần thực hiện.
ALUControl ALU Operation
0000 AND
0001 OR
0010 ADD
0011 XOR
0100 NOR
0101 Not use
0110 SUB
0111 SLT
1000 SLL
1001 SRL

1010 SRA
1011…1111 Not use
10
GVHD: Th.s Tạ Kim Huệ
Hình 2.5: Datapath khi thực hiện lệnh loại R
ALU nhận dữ liệu từ các đầu ra của thanh ghi file hoặc ngay trong mã lệnh.
2.4.Chức năng khối Control Unit
Hình 2.6: Control Unit
* Khối điều khiển CU tính toán các tín hiệu điều khiển dựa trên các trường opcode
Instr[31-26] và funct Instr[5-0] của lệnh.
* Hầu hết các tín hiệu điều khiển nằm ở trường opcode, tuy nhiên các lệnh loại R
phải sử dụng thêm trường funct để xác định các phép toán ALU.
* Như trên hình vẽ, khối Control Unit tính toán hầu hết các tín hiệu điều khiển
như:MemtoRegD,MemWriteD,BranchD,ALUSrcD,RegDstD,RegWriteD,MemRe
adD, ALUSelectShilfD, ALUControlD. Tất cả các tín hiệu điều khiển này được
đưa vào thanh ghi trạng thái.
* Khối ALU Decoder sử dụng trường Funct[5-0] và 2 bit Op để tính toán
ALUControl.
Mã hóa ALUOp:
ALUO Ý nghĩa
11
GVHD: Th.s Tạ Kim Huệ
p
000 Add
001 Subtract
010 Look at func field
011 And
100 Or
101 Xor
110 Not use

111 Set less than
2.5.Chức năng khối Data Memory
Hình 2.7: Data Memory
2.6.Kỹ thuật pipeline và xử lý xung đột
Hình 2.8.Hazard unit
 Xung đột cấu trúc
* Nguyên nhân xảy ra xung đột:
Do các lệnh được thực hiện đồng thời, tại cùng 1 chu kì, hai lệnh khác nhau có thể
cùng truy cập đến 1 tài nguyên dẫn đến xung đột. Trong kiến trúc von Neumann,
lệnh và dữ liệu cùng nằm trên 1 bộ nhớ, khi có hai yêu cầu đọc dữ liệu và đọc lệnh
12
GVHD: Th.s Tạ Kim Huệ
sẽ dẫn đến xung đột.
* Xử lý xung đột:
Thêm tài nguyên phần cứng. Với kiến trúc Havard lệnh và dữ liệu được chia thành
hai bộ nhớ và bus khác nhau, do vậy sẽ không xảy ra xung đột cấu trúc.
 Xung đột dữ liệu (RAW: read after write)
* Nguyên nhân
Khi toán hạng của lệnh sau phụ thuộc vào lệnh trước chưa được hoàn thành sẽ gây
ra việc đọc sai dữ liệu, và gọi là xung đột dữ liệu.
Hình 2.9: Xung đột điều khiển
Lệnh add sẽ công nội dung của thanh ghi $s2 và $s3 vào thanh ghi $s0, kết quả
được hoàn thành và lưu vào thanh ghi ở chu kì 5, nhưng tại chu kì 3, lệnh and đã
dung nội dung $s0 làm toán hạng, do vậy kết quả sẽ không như mong muốn.
Tương tự đối với lệnh or.
* Giải quyết xung đột:
Có 2 cách để giải quyết loại xung đột này là chờ dữ liệu tính xong rồi thực hiện
lệnh kế tiếp, hoặc chuyển dữ liệu sau khi được tính toán ở giai đoạn MEM hoặc
WB về giai đoạn EX.
13

GVHD: Th.s Tạ Kim Huệ
* Phương pháp chờ: phần cứng sẽ phát hiện sự phụ thuộc dữ liệu và dừng những
lệnh nào có dữ liệu phụ thuộc vào lệnh trước đó cho tới khi dữ liệu được sẵn
sàng.
Hình 2.10.Phương pháp dừng & chờ
* Phương pháp chuyển tiếp dữ liệu: các lệnh thường được tính toán ở giai đoạn EX
rồi chuyển đến các giai đoạn MEM và WB, do vậy ta có thể chuyển dữ liệu trờ về
giai đoạn EX cho các lệnh phụ thuộc dữ liệu phía sau.
14
GVHD: Th.s Tạ Kim Huệ
Hình 2.11.Chuyển tiếp dữ liệu
* Giải quyết xung đột cho lệnh lw
Lệnh lw chỉ tính toán địa chỉ ở giai đoạn đoạn EX, dữ liệu thực sự chỉ có được ở
giai đoạn MEM, do vậy chúng ta không thể chuyển tiếp từ giai đoạn MEM. Yêu
cầu dừng chương trình cần được thực hiện.
Hình 2.12: Dừng chương trình
* Xung đột điều khiển
15
GVHD: Th.s Tạ Kim Huệ
Hình 2.13.Xung đột điều khiển
a. Nguyên nhân
Khi thực hiện các lệnh điều khiển chương trình như bne, beq,jr,j… điều kiện nhảy
được tính toán ở giai đoạn EX, nếu điều kiện đúng chương trình sẽ nhảy tới địa chỉ
cho trước, không may thay, các lệnh kế tiếp đã được nạp vào các giai đoạn IF, ID và
chương trình sẽ làm việc không như mong muốn.
b. Giải quyết xung đột
* Giải quyết xung đột bằng phương pháp chờ.
VD: xét đoạn chương trình
beq $t1, $t2, 40
and $t0, $s0, $s1

or $t1, $s4, $s0
sub $t2, $s0, $s5
Lệnh beq được tính toán và quyết định nhảy ở giai đoạn EX,các lệnh and,or,sub sẽ
phải chờ cho tới khi lệnh beq tính toán xong điều kiện, nếu điều kiện nhảy không
đúng thì chúng mới được nạp vào đường ống. Việc chờ tính toán điều khiển làm
16
GVHD: Th.s Tạ Kim Huệ
mất 3chu kì, do vậy sẽ làm tăng CPI.
* Giải quyết xung đột bằng cách tính toán điều kiện nhảy sớm
Chúng ta có thể tính toán điệu kiện nhảy sớm ở giai đoạn ID, việc quyết định nhảy
sớm sẽ làm giảm thời gian chờ và tăng hiệu suất.
2.7.Các khối chức năng khác
* Khối này thực hiện mở rộng bit từ
16bit-> 32bit
* Khối dịch trái 2 bit
17
GVHD: Th.s Tạ Kim Huệ
Phần 3. So sánh đánh giá thiết kế sử dụng kỹ thuật pipeline với các
thiết kế khác
So sánh, đánh giá các thiết kế đơn xung nhịp, đa xung nhịp, kỹ thuật pipeline dựa
trên các tiêu chí về tốc độ xung đồng hồ, hiệu quả sử dụng chu kỳ đồng hồ, hiệu
năng,diện tích thiết kế và lưu lượng của bộ xử lý:
 Thiết kế đơn xung nhịp (Single Cycle MIPS):
* Ưu điểm: Đơn giản và dễ hiểu
* Nhược điểm: Sử dụng chu kì đồng hồ không hiệu quả vì chu kì đồng hồ được
đặt theo lệnh chậm nhất.
Tốn diện tích thiết kế vì cần nhân đôi một số khối chức năng (Ví dụ: bộ cộng) vì
chúng không thể được chia sẻ trong cùng một chu kì động hồ.
Hình 3.14. Biểu đồ thời gian thiết kế đơn xung nhịp
18

GVHD: Th.s Tạ Kim Huệ
Hình 3.15.Datapath thiết kế đơn xung nhịp
 Thiết kế đa xung nhịp (Multi-Cycle MIPS): Chia lệnh thành các phần thực hiện IF,
ID, EX, MEM, WB. Mỗi pha thực hiện trong 1 chu kì xung nhịp.
* Ưu điểm: Thời gian thực hiện của mỗi lệnh được điều chỉnh tùy thuộc độ phức
tạp của lệnh.
Các khối chức năng được chia sẻ giữa các pha khác nhau của lệnh do một khối
chức năng cụ thể không cần trong toàn bộ các pha thục hiện của lệnh.
19
GVHD: Th.s Tạ Kim Huệ
Hình 3.16. Datapath thiết kế đa xung nhịp
 Thiết kế MIPS dựa trên kỹ thuật pipeline
Hình 3.17. Sơ đồ khối thiết kế MIPS pipeline
Thiết kế MIPS dựa trên kỹ thuật pipeline (Kỹ thuật đường ống) là phương pháp
kết hợp ưu điểm của hai phương pháp trên:
Quy tắc:
* Chia việc thực hiện lệnh thành 5 giai đoạn, tại một thời điêm bất kỳ thực hiện
tất cả các giai đoạn nhưng của các lệnh khác nhau.
* Thực hiện lệnh tiếp theo trước khi lệnh hiện tại kết thúc
20
GVHD: Th.s Tạ Kim Huệ
* Chu kỳ đồng hồ quyết định bởi giai đoạn thực hiện lệnh chậm nhất
* Với một số lệnh có chu kỳ lãng phí nhưng vẫn phải thêm để đảm bảo pipeline
Ưu điểm:
* Cải thiện thông lượng lượng – tổng số công việc hoàn thành trong 1 khoảng
thời gian
* Dễ triển khai:
* Các lệnh có cùng độ dài
* Ít định dạng lệnh, các định dạng lệnh có tính đối xứng
* Chỉ truy cập bộ nhớ bằng lệnh lw và sw

* Mỗi lệnh chỉ ghi lớn nhất một kết quả ở hai giai đoạn cuối (MEM hoặc
WB)
* Toán hạnh được sắp xếp trong bộ nhớ sao cho một lệnh dịch chuyển dữ
liệu chỉ cần một lần truy cập bộ nhớ
Hình 3.18 So sánh biểu đồ thời gian của thiết kế đơn xung và pipeline
21
GVHD: Th.s Tạ Kim Huệ
Phần 4.Thiết kế mạch
 Bộ đếm chương trình PC
Hình 4.19. Thanh ghi bộ đếm chương trình
Thanh ghi bộ đếm chương trình chứa địa chỉ của lệnh cần thực thi. PC được cập nhật ở
mọi chu kỳ mà không cần tín hiệu điều khiển PC.
* Đầu vào PC’: 32 bit, đây chính là địa chỉ của lệnh tiếp theo cần thực hiện trong
bộ nhớ lệnh.
* Đầu ra PC: 32 bit, trỏ tới lệnh hiện tại của chương trình trong bộ nhớ lệnh.
Ngoài ra khối bộ đếm chương trình này còn có tín hiệu đầu vào clock.
22
GVHD: Th.s Tạ Kim Huệ
Hình 4.20. Quá trình xử lí lệnh
 Bộ nhớ lệnh
Hình 4.21. Khối Intruction Memory
* Bộ nhớ lệnh lưu trữ chương trình thực thi dưới dạng mã máy.
* Khối bộ nhớ lệnh gồm có một cổng đọc.
* Đầu vào: địa chỉ 32 bit nơi chứa lệnh cần thực thi.
* Đầu ra: lệnh cần thực thi tương ứng với địa chỉ đầu vào.
23
GVHD: Th.s Tạ Kim Huệ
 Register File
Hình 4.22.Tệp thanh ghi
Tệp thanh ghi file gồm 32 thanh ghi như sau:

Số thanh ghi Tên quy ước Chức năng
$0 $zero Luôn có giá trị bằng 0
$1 $at Thanh ghi giành riêng cho các lệnh giả
$2-$3 $v0, $v1 Chứa giá trị trả về của hàm
$4-$7 $a0, $a3 Chứa các tham số cho hàm
$8-$15 $t0-$t7 Chứa dữ liệu tạm thời
$16-$23 $s0-$s7 Thanh ghi lưu trữ, dành riêng cho các chương
trình con
$24-$25 $t8-$t9 Thanh ghi tạm thời
$26-$27 $k0-$k1 Dành riêng cho kernel, không được sử dụng
$28 $gp Con trỏ toàn cục
$29 $sp Con trỏ stack
$30 $fp Con trỏ khung
$31 $ra Chứa địa chỉ trả về
* Khối thanh ghi file gồm 2 cổng đọc và một cổng ghi.
* Các cổng đọc:
* A1, A2 là các đầu vào địa chỉ 5 bit (32 thanh ghi)
* RD1, RD2 là các đầu ra dữ liệu tương ứng với các địa chỉ đầu vào tương ứng.
* Cổng ghi:
* A3: đầu vào địa chỉ của thanh ghi đích cần ghi
24
GVHD: Th.s Tạ Kim Huệ
* WD3: đầu vào dữ liệu cần ghi
* WE3: tín hiệu cho phép ghi. Nếu WE3 =1 thì dữ liệu sẽ được ghi vào thanh ghi
tại sườn lên của xung clock
 Bộ nhớ dữ liệu
Hình 4.23.Bộ nhớ dữ liệu
* Khối bộ nhớ dữ liệu gồm có một cổng dành cho việc đọc hoặc ghi dữ liệu. Đọc và
ghi dự liệu có chung đầu vào địa chỉ.
* Ghi dữ liệu:

* Nếu tín hiệu cho phép ghi WE=1 thì dữ liệu được ghi vào trong bộ nhớ dữ liệu tại
sườn lên của xung clock
* Đọc dữ liệu:
* Nếu WE=0 thì dữ liệu được được đọc ra chân RD
 Xây dựng Datapath cho lệnh loại R
* Thanh ghi bộ đếm chương trình có chứa địa chỉ của lệnh sẽ được thực thi. Giai
đoạn đầu tiên trong chu trình thực hiện là đọc lệnh từ bộ nhớ lệnh. Vì vậy PC phải
được kết nối với đầu vào địa chỉ của bộ nhớ lệnh.
25

×