249340669 bao-cao-ktmt

29
Bài tập lớn kiến trúc máy tính 2013 1 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐIỆN TỬ VIỄN THÔNG ====o0o==== BÁO CÁO BÀI TẬP LỚN KIẾN TRÚC MÁY TÍNH ĐỀ TÀI: THIẾT KẾ MIPS 32 BIT STT Hvà tên MSSV Lp 1 Nguyn Quang Hiếu 20101516 ĐT1 2 Phm Trọng Đồng 20101026 ĐT1 3 Lý Đức Vượng 20102591 ĐT1 4 Lê Hng Nhung 20101969 ĐT4 Hà Nội, 12/2013 TRƯỜNG ĐẠI HC BÁCH KHOA HÀ NI

Transcript of 249340669 bao-cao-ktmt

Page 1: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

1

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

VIỆN ĐIỆN TỬ VIỄN THÔNG ====o0o====

BÁO CÁO

BÀI TẬP LỚN KIẾN TRÚC MÁY TÍNH

ĐỀ TÀI:

THIẾT KẾ MIPS 32 BIT

STT Họ và tên MSSV Lớp

1 Nguyễn Quang Hiếu 20101516 ĐT1

2 Phạm Trọng Đồng 20101026 ĐT1

3 Lý Đức Vượng 20102591 ĐT1

4 Lê Hồng Nhung 20101969 ĐT4

Hà Nội, 12/2013

TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

Page 2: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

2

Mục Lục

A.Lời mở đầu ....................................................................................................................... 3

B. Nội dung thực hiện .......................................................................................................... 4

I. Tổng quan về MIPS ...................................................................................................... 4

1.Đặc điểm kĩ thuật ....................................................................................................... 4

2. Lịch sử dòng xử lý MIPS .......................................................................................... 5

3. Các dòng vi xử lý thương mại MIPS đã sản xuất ..................................................... 5

4. Kiến trúc bộ lệnh....................................................................................................... 6

5. Phân loại MIPS ......................................................................................................... 7

6. Ưu nhược, điểm của MIPS ....................................................................................... 8

7. Ứng dụng .................................................................................................................. 9

II.Nội dung thực hiện ....................................................................................................... 9

1.Yêu cầu thực hiện ...................................................................................................... 9

2.Sơ đồ khối .................................................................................................................. 9

3.Giải quyết xung đột.................................................................................................. 16

III.Kết quả ...................................................................................................................... 25

1. Sơ đồ testbench ....................................................................................................... 25

2. Test code, kiểm thử xung đột .................................................................................. 25

3. Các phương án giải quyết mở rộng: ....................................................................... 27

4. Hướng phát triển: .................................................................................................... 28

C.Kết luận .......................................................................................................................... 29

Page 3: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

3

A.Lời mở đầu

Trong quá trình phát triển của công nghệ máy tính, con người đã chế tạo ra hàng

ngàn loại máy tính khác nhau. Rất nhiều trong số những máy tính này đã bị quên lãng đi,

chỉ một số ít còn được nhắc lại cho đến ngày nay. Đó là các máy tính với những ý tưởng

thiết kế và nguyên lý hoạt động độc đáo tạo nên một tầm ảnh hưởng lớn đến các máy tính

thế hệ sau nó. Việc tìm hiểu về kiến trúc máy tính giúp chúng ta có những kiến thức cơ

bản để hiểu nguyên lí và cấu tạo của máy, tạo tiền đề để phát triển tạo ra những thế hệ

máy tính tối ưu hơn trong tương lai. Kiến trúc MIPS được sử dụng rỗng rãi trong các

dòng máy tính đồ họa silicon, các hệ thống nhúng, các thiết bị điện tử…..Chính bởi vậy,

nhóm chúng em đã quyết định làm đề tài thực hiện thiết kế MIPS 32bit với chức năng

cơ bản.

Do trình độ cũng như kiến thức còn hạn chế nên bài tập lớn chắc chắn còn nhiều

sai sót, mong cô góp ý để kiến thức và kỹ năng môn học ngày càng hoàn thiện hơn.

Page 4: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

4

B. Nội dung thực hiện

I. Tổng quan về MIPS

MIPS (Microprocessor without Interlocked Pipeline Stages)

Là kiến trúc bộ tập lệnh RISC phát triển bởi MIPS Technologies. Ban đầu kiến trúc MIPS

là 32bit, và sau đó là phiên bản 64 bit. Nhiều sửa đổi của MIPS, bao gồm MIPS I, MIPS

II, MIPS III, MIPS IV, MIPS V, MIPS32 và MIPS64.

Phiên bản hiện tại là MIPS32 và MIPS64.

Cũng có một vài tuỳ chọn mở rộng, baogồm MIPS-3D (1 tập lệnh đơn giản các câu lệnh

SIMD về dấu chấm động để thực hiện các tác vụ về đồ họa 3D), MIPS16e (khả năng nén

vi lệnh để tiết kiệm không gian bộ nhớ) và MIPS MT (MultirTheading) kiến trúc đa

luồng mới được bổ xung cho hệ thống.

1.Đặc điểm kĩ thuật

Năm 1981, một nhóm các nhà nghiên cứu thuộc đại học Stanford do John L. Hennessy đứng

đầu đã bắt đầu một công trình nghiên cứuvề bộ xử lý MIP đầu tiên. Khái niệm 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

(pipelineinstructions), một công nghệ đã được biết đến từ lâu nhưng lại khó phát triển.

Thông thường một đường ống sẽ mở rộng việc chạy một câu lệnh thành vài bước, bắt đầu

thực hiện “bước một” của câu lệnhtrước khi câu lệnh trước hoàn thành. Trong khi đó, thiết

kế truyền thống yêu cầu phải đợi cho đến khi một câu lệnh hoàn thành mới được chạy

câu lệnh tiếp theo.Thiết kế theo pipeline làm giảm đáng kể thời gian dành của CPU khi

thực hiện liên tiếp các câu lệnh.

Mặc dù thiết kế này đã loại trừ một số câu lệnh hữu dụng, đáng kể nhất như là các lệnh

nhân và 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

Page 5: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

5

lên rõ rệt bởi vì các vi xử lý có thể chạy ở xung nhịp lớn hơn rất nhiều. Tuy nhiên việc loại

bỏ các câu lệnh trên lại không được các nhà thiết kế thời bấy giờ ủng hộ. Rất nhiều ý kiến

cho rằng thiết kế kiểu đường ống lệnh sẽ không tồn tại được ,nếu chỉ thay một lệnh nhân

phức tạp bằng nhiều lệnh cộng đơn giản thì làm sao hệ thống có thể nhanh hơn được. Tuy

nhiên đã cho thấy tốc độ thuộc về thiết kế đường ống,chứ không phải theo câu lệnh

2. Lịch sử dòng xử lý MIPS

Năm 1984, Hennessy rời trường đại học Stanford để thành lập công ty MIPS Computer

System.Họ cho ra đời thiết kế đầu tiên là R2000 vào năm 1985, sau đó phát triển R3000

vào năm 1998. Những CPU 32 bit 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.Tuy nhiên MIPS gặp khó

khăn trong tài chính trong khi tung sản phẩm này ra thị trường. Thiết kế này rất quan

trọng đối với SGI-một trong những khách hàng của MIPS lúc bấy giờ, vì thế SGI đã mua

lại công ty vào năm 1992 để bảo vệ thiết kế không bị mất đi. Từ đó MIPS trở thành một

công ty con của SGI và được biết đến bởi tên MIPS Technologies

3. Các dòng vi xử lý thương mại MIPS đã sản xuất

- R2000 : Xuất hiện trên thị trường vào năm 1985, được bổ sung thêm nhiều câu lệnh

mới, có thể được khởi tạo ở chế độ big-endian hay little-endian, có 32 thanh ghi 32bit

, một trong số đó đảm nhiệm việc xử ý các ngoại lệ và bẫy , trong nhưng không có thanh

ghi mã điều kiện. R2000 cũng hỗ trợ tới 4 bộ xử lý khi 3 bộ còn lại sử dụng cho mục đích

khác.

- R3000 :bổ xung thêm 32kB cho bộ nhơ Cache (và sớm được đưa lên 64kB) cho các

lệnh và dữ liệu, kèm theo đó là cơ chế Cache coherency hỗ trợ cho nhiều bộ xử lý.R3000

cũng bao gồm MMU tính năng phổ biến của họ CPUs kỷ nguyên này

Page 6: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

6

- R4000 :Được đưa ra năm 1991,mở rộng tập lệnh MIPS để hỗ trợ đầy đủ kiến trúc 64bit,

chuyển FTU vào main để tạo ra một hệ thống chip đơn lẻ, xử lý với tốc độ lên đến

100Mhz

- R8000 :Ra đời năm 1994,là thiết kế MIPS siêu vô hướng (superscala) đầu tiên,cho phép

xử lý 2 ALU và 2 phép tính nhớ mỗi chu kỳ.Thiết kế này hỗ trợ tới 6 chip và 4MB cache

mở rộng

- R10000 :Ra đời năm 1995,là thiết kế chip đơn lẻ,chạy với tốc độ cao hơn R8000,có

32kb cache chính cho câu lệnh và dữ liệu

- Ngoài ra còn có R6000,R1 6000,R1 6000A…

4. Kiến trúc bộ lệnh

4.1. Nguyên tắc thiết kế bộ lệnh MIPS

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(32 bit)

Í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 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ế tốt đòi hỏi sự thỏa hiệp

3 loại định dạng chỉ thị

4.2. Một số lệnh trong MIPS

MIPS chỉ cần hỗ trợ 32 thanh ghi là đủ, đánh số từ $0-$31

Page 7: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

7

Mỗi thanh ghi có kích thước 32bit(4 byte). Để đơn giản và dễ dàng trong việc truy xuất

bộ nhớ, tất cả các lệnh đều có chiều dài 32 bit.

• MIPS đã hỗ trợ các nhóm lệnh xử lý dữ liệu:

- Lệnh số học

- Lệnh luận lý

- Lệnh nạp lưu dữ liệu

Ngoài các lệnh xử lý dữ liệu, máy tính còn phải hộ trợ các lệnh điều khiển quá trình thực

thi các lệnh…

4.3. Nguyên tắc lưu dữ liệu trong bộ nhớ

MIPS lưu dữ liệu trong bộ nhớ theo nguyên tắc Alignment Restriction, nghĩa là các đối

tượng lưu trong bộ nhớ phải bắt đầu tại địa chỉ là bội số của kích thước đối tượng.

Như vậy, từ nhớ phải bắt đầu tại địa chỉ là bội số của 4.

MIPS lưu trữ dữ liệu trong bộ nhớ theo nguyên tắc Big Endian, nghĩa là đối với giá trị có

kích thước lớn hơn 1 byte thì byte sẽ lưu tại địa chỉ thấp.

5. Phân loại MIPS

Đơn xung nhịp: Thiết kế, xử lí 1 lệnh trong vòng 1 chu kì.

o Ưu điểm:

Đơn giản và dễ hiểu

o Nhược điểm:

Sử dụng chu kỳ đồng hồ không hiệu quả – chu kỳ đồng hồ được đặt theo lệnh

chậm nhất.

Các lệnh phức tạp như lệnh nhân dấu phẩy động: Tốn diện tích thiết kế vì cần

nhân đôi một số khối chức năng (VD. bộ cộng) vì chúng không thể được chia

sẻ trong cùng 1 chu kỳ đồng hồ

Đa xung nhịp:Chia lệnh thành các pha thực hiện: IF, ID, EX, MEM, WB. Mỗi pha thực

hiện trong 1 chu kỳ xung nhịp.

o Ưu điểm:

Page 8: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

8

Thời gian thực hiện (= số pha) 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

o Nhược điểm:

Các lệnh thực hiện liên tiếp nhau.

Lệnh trước được thực hiện xong mới đến lệnh sau vì vậy xuất hiện khoảng thời

gian rỗi giữa các khâu.

Pipeline

o Ưu điểm:

Kĩ thuật pipeline được đưa ra để tận dụng những thời gian rỗi giữa các khâu.

Kĩ thuật pipeline sẽ làm tăng tốc độ vi xử lí.

6. Ưu nhược, điểm của MIPS

Ưu điểm:

Bộ xử lý truy xuất thanh ghi nhanh nhất (hơn 1 tỉ lần trong 1 giây) vì thanh ghi

là một thành phần phần cứng thường nằm chung mạch với bộ xử lý.

CPU không phải đợi để thực hiện các tiến trình đơn mà thực hiện cùng lúc

nhiều tiến trình, do đó chu kì của tiến trình được thông suốt

Không gian bộ nhớ của máy được giải phóng nhiều hơn do khả năng nén vi

lệnh để làm chương trình nhỏ hơn

Khuyết điểm:

Do thanh ghi là một thành phần phần cứng nên số lượng cố định và hạn chế.

Do đó, sử dụng phải khéo léo và phức tạp

Page 9: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

9

7. Ứng dụng

Thiết kế MIPS được sử dụng rộng rãi trong các dòng máy tính đồ họa silicon,các hệ

thống nhúng như TiVo thế hệ 2,các thiết bị sử dụng hệ điều hành Windows CE,Cisco

routes và các máy chơi game console như Nitendo 64,Sonyplaystation

II.Nội dung thực hiện

1.Yêu cầu thực hiện

MIPS 32 bit thực hiện các lệnh cơ bản +, -, and, or, not, lw, sw, beq.

Thực hiện bằng ngôn ngữ mô tả phần cứng Verilog HDL.

Giải quyết được các xung đột cơ bản trong MIPS pipeline.

2.Sơ đồ khối

2.1 Sơ đồ khối tổng quát:

Đây là khối xử lý chính của Mips 32 bit.

o Đầu vào :

Instr[31:0] : Mã lệnh được lấy từ bộ nhớ lệnh

ReadData[31:0] : Dữ liệu được đọc ra từ bộ nhớ dữ liệu.

Page 10: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

10

o Đầu ra :

MemWrite : Tín hiệu điều khiển phát ra để yêu cầu ghi vào bộ nhớ dữ liệu.

ALUOut[31:0] : Dữ liệu sau khi tính toán từ bộ ALU

WriteData[31:0] : Dữ liệu được ghi vào bộ nhớ dữ liệu.

PC[31:0] : Tín hiệu PC đi vào bộ nhớ lệnh.

2.2 Thiết kế chi tiết:

Sau đây em xin liệt kê vai trò của một số khối quan trọng của bộ vxl MIPS

a) Khối Control Unit :

Là khối sinh ra các tín hiệu điều khiển cho con Mips khi có lệnh của bên ngoài đưa

vào dưới dạng mã lệnh.

Đầu vào : Op[5:0] , Funct[ 5:0] lấy từ mã lệnh.

Zero lấy từ đầu ra của khối ALU

Đầu ra : Các tín hiệu để điều khiển các khối khác là :

+) Tín hiệu đưa dữ liệu từ bộ nhớ ra thanh ghi Memtoreg

+) Tín hiệu Regwrite, Memwrite

+) Tín hiệu chọn ALUSrc, PCSrc, RegDst,

Page 11: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

11

+) Tín hiệu ALUControl

b) Khối Register File :

Là khối thanh ghi của con Mips. Đầu vào sẽ là địa chỉ của các thanh ghi đưa vào từ

mã lệnh và dữ liệu quay về thanh ghi từ giai đoạn WB. Đầu ra sẽ là dữ liệu nằm

trong thanh ghi mà địa chỉ lệnh trỏ tới.

Đầu vào : +) RegwriteW : tín hiệu cho phép đọc mã lệnh tương ứng vào

thanh ghi qua WB

+) Mã lệnh tương ứng của Rs, Rt : InstrD[25:21], InstrD[20:16]

+) Dữ liệu trả về WriteRegW[4:0] và tín hiệu kết quả ResultW

Đầu ra : Dữ liệu được đọc trong 2 thanh ghi mà mã lệnh truy cập tới địa chỉ của nó

Readdata1, Readdata2

c) Khối ALU : Là khối phục vụ nhiệm vụ tính toán.

Đầu vào : +) Tín hiệu chọn loại tính toán : cộng, trừ, nhân, chia : ALUControl được

sinh ra từ ControlUnit

+) Dữ liệu được đọc từ 2 thanh ghi trong tập thanh ghi Register file

Readdata1, Readdata2 32 bit

Đầu ra: +) Dữ liệu ra sau khi được tính toán ALUOut 32 bit.

+) Tín hiệu Zero sử dụng trong lệnh rẽ nhánh beq, bne.

Page 12: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

12

d) Khối SignExt :

Khối được sử dụng với nhiệm vụ chuyển đổi dữ liệu dịch từ 16 bit trong mã lệnh

thành 32 bit để thực hiện cho nhiệm vụ tính toán.

Đầu vào : Dữ liệu dịch được lấy trong 16 bit cuối của mã lệnh Instr[15:0]

Đầu ra : Dữ liệu dich được chuyển thành 32 bit bằng cách lấy 16 bit đầu bằng bit thứ 16

và 16 bit cuối là Instr[15:0]. y[31:0] = [16(Instr[15]), Instr[15:0]].

Từ các khối trên và một số khối logic cơ bản khác ta xây dựng được bộ MIPS đa

xung nhịp như hình vẽ

Page 13: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

13

Ở đa xung nhịp ta chia lệnh thành 5 giai đoạn IF, ID, EX, MEM, WB. Mỗi giai đoạn được

thực hiện trong một chu kỳ. Trong sơ đồ gồm có các khối chính như là khối Control Unit,

khối Register File, khối ALU, khối SignExt.

2.3. Sơ đồ khối Pipelined.

Từ MIPS đa xung nhịp chúng ta tiến hành pipeline bộ vi xử lý bằng cách thêm

vào các thanh ghi trạng thái IFID, IDEX, EXMEM, MEMWB, PC. Các thanh ghi sẽ thực

hiện nhiệm vụ chuyển tiếp dữ liệu giữa các khâu

a) Stage IFID : Thanh ghi giữa 2 giai đoạn IF và ID. Thanh ghi gồm 64 bit dữ liệu bao gồm

32 bit tín hiệu điều khiển control signals, 32 bit tín hiệu dữ liệu của PC

Đầu vào : +) Tín hiệu clock và reset

Page 14: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

14

+) Tín hiệu để điều chỉnh thanh ghi ghi hoặc dừng ghi bao gồm IF_Flush,

ID_stall

+) Dữ liệu sau khi qua giai đoạn IF : [32:0]IF_Instruction , [32:0]IF_PCAdd4

Đầu ra : +) Dữ liệu chuẩn bị vào giai đoạn ID : [32:0]ID_Instruction, [32:0]ID_PCAdd4

b) Stage IDEX stage : Thanh ghi giữa 2 giai đoạn ID và EX. Thanh ghi chuyển tiếp 118 bit

dữ liệu bao gồm 64 bit dữ liệu của 2 thanh ghi, 32 bit dữ liệu dịch, 15 bit mã lệnh của Rs,

Rt, Rd và 7 bit lưu tín hiệu điều khiển.

Đầu vào : +) Tín hiệu clock,reset.

+) Tín hiệu điều khiển được lưu lại ID_RegWrite, ID_MemtoReg,

ID_MemWrite, ID_ALUControl[2:0], ID_ALUSrc,ID_ RegDst.

+) Dữ liệu 32 bit đọc từ 2 thanh ghi SrcA, SrcB, dữ liệu dịch 32 bit

SignExtlmm.

+) Bit trong mã lệnh thể hiện Rs, Rt, Rd 5 bit.

+) Tín hiệu để xử lý xung đột FlushE.

Đầu ra : +) Tín hiệu điều khiển được lấy ra cho giai đoạn tính toán EX_RegWrite,

EX_MemtoReg, EX_MemWrite, EX_ALUControl[2:0], EX_ALUSrc, EX_RegDst.

+) Dữ liệu 32 bit đọc từ 2 thanh ghi SrcA, SrcB, dữ liệu dịch 32 bit SignExtlmm

cho giai đoạn EX.

+) Bit trong mã lệnh thể hiện Rs, Rt, Rd 5 bit.

c) Stage EXMEM stage : Thanh ghi giữa 2 giai đoạn EX và MEM. Thanh ghi chuyển tiếp 72

bit dữ liệu bao gồm 32 bit dữ liệu ra từ khối ALU, 32 bit dữ liệu để ghi vào bộ nhớ, 5 bit

mã lệnh quay trở lại thanh ghi và 3 bit lưu tín hiệu điều khiển.

Đầu vào : +) Tín hiệu clock, reset.

+) Tín hiệu điều khiển được lưu lại EX_RegWrite, EX_MemtoReg,

EX_MemWrite.

+) Dữ liệu 32 bit lấy ra từ bộ tính toán ALU và dữ liệu 32 bit dùng để lưu trữ

vào bộ nhớ EX_WriteDataa

Page 15: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

15

+) Bit mã lệnh quay trở lại tệp thanh ghi 5 bit

Đầu ra : +) Tín hiệu điều khiển công việc ghi và đọc trong bộ nhớ.

+) Dữ liệu 32 bit lưu trữ vào bộ nhớ M_WriteData, dữ liệu 32 bit từ bộ ALU

M_ALUOut

+) Bit mã lênh quay trở lại tệp thanh ghi 5 bit.

d) Stage MEMWB : Thanh ghi giữa 2 giai đoạn MEM và WB. Thanh ghi chuyển tiếp 71 bit

dữ liệu bao gồm 32 bit dữ liệu được đọc ra từ bộ nhớ, 32 bit dữ liệu tính toán từ bộ ALU

quay trở lại tệp thanh ghi, 5 bit mã lệnh quay về thanh ghi và 2 bit lưu tín hiệu điều khiển.

Đầu vào : +) Tín hiệu clock, reset.

+) Tín hiệu điều khiển M_RegWrite, M_MemtoReg.

+) Tín hiệu dữ liệu 32 bit đọc ra từ bộ nhớ M_ReadData và dữ liệu kết quả từ bộ

ALU 32 bit M_ALU_Result.

+) Bit mã lệnh quay về thanh ghi 5 bit.

Đầu ra : +) Tín hiệu điều khiển M_RegWrite, M_MemtoReg.

+) Tín hiệu dữ liệu 32 bit đọc ra từ bộ nhớ M_ReadData và dữ liệu kết quả từ bộ

ALU 32 bit WB_ALU_Result.

+) Bit mã lệnh quay về thanh ghi.

e) Stage PC : Thanh ghi lưu trữ giá trị của PC cho lệnh tiếp theo. Thanh ghi PC là thanh ghi

32 bit lưu giá trị của tín hiệu PC.

Đầu vào : +) Tín hiệu clock,reset

+) Tín hiệu PC 32bit.

+) Tín hiệu để xử lý xung đột StallF

Đầu ra : +) Tín hiệu ra PCF 32 bit để đưa vào IMEM( Instruction Memory).

f) Khối Hazard : Dùng để xử lý xung đột gặp phải trong con Mips pipelined. Khi xảy ra các

hiện tượng xung đột thì sẽ có tín hiệu báo xung đột về khối Hazard và từ đấy sẽ phát các

tín hiệu để điều khiển các thanh ghi sao cho xử lý được các xung đột xảy ra.

Đầu vào : +) Các bit mã lệnh của các thanh ghi [4:0] rsD, rtD, rsE, rtE.

Page 16: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

16

+) Bit mã lệnh trả về thanh ghi [4:0] WriteRegE, WriteRegM, WriteRegW.

+) Các tín hiệu điều khiển BranchD, MemtoRegE, MemtoRegM, RegWriteM,

RegWriteW, RegWriteM.

Đầu ra : +) Các tín hiệu điều khiển các thanh ghi để xử lí xung đột StallF, StallD,

ForwardAD, ForwardBD, FlushE, [1:0] ForwardAE, [1:0] ForwardBE.

3.Giải quyết xung đột

3.1. Các loại xung đột và phương pháp khắc phục:

3.1.1. Xung đột cấu trúc

a) Đặt vấn đề

Xung đột cấu trúc xảy ra khi 2 lệnh cùng cố gắng sử dụng 1 nguồn tại cùng 1 thời điểm.

Ví dụ như tại 1 thời điểm có 2 lệnh cố gắng ghi và đọc dữ liệu từ tập thanh ghi thì tại thời

điểm đó xung đột xảy ra.

b) Hướng giải quyết

Có 2 phương pháp để có thể khắc phục được dạng xung đột này

- Thực hiện chờ

- Ghi ở chu kì lên và tiến hành đọc ở chu kì xuống

Trong bài này ta lựa chọn phương pháp thứ 2 vì mang lại hiệu năng cao hơn

Page 17: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

17

3.1.2. Xung đột dữ liệu:

a) Đặt vấn đề

Xung đột dữ liệu xảy ra khi toán hạng nguồn của lệnh chưa kịp thời được cập nhật

ở những câu lệnh phía trước đó

Ví dụ có đoạn lệnh sau:

I1: add $s0, $s2, $s3

I2: and $t0, $s0, $s1

I3: or $t1, $s4, $s0

I4: sub $t2, $s0, $s5

1 2 3 4 5 6 7 8

I1 IF ID EX MEM WB

I2 IF ID EX MEM WB

I3 IF ID EX MEM WB

I4 IF ID EX MEM WB

Page 18: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

18

Đoạn mã hợp ngữ trên xảy ra xung đột khi $s0 được sử dụng ở lệnh I2 nhưng chưa

được cập nhật giá trị $s0 tính được ở lệnh I1. Bởi $s0 chỉ có thể được cập nhật ở khâu

WB của I1 (Sau chu kì thứ 5) nhưng để thực hiện được lệnh I2 theo sơ đồ trên thì cần kết

quả cập nhật ở khâu ID (Chu kì thứ 3)

Tương tự lệnh I3 cũng sẽ gặp xung đột như lệnh I2 do kết quả $s0 chưa được cập

nhật. Đến lệnh I4 muốn WB của I1 và ID của I4 cùng diễn ra, vậy để kịp cập nhật được

kết quả $s0 thì cần phải đọc và ghi trong cùng chu kì

b) Hướng giải quyết

Giải quyết xung đột dữ liệu bằng phương pháp chuyển tiếp

Phương pháp chuyển tiếp là phương pháp chuyển tiếp kết quả từ khâu MEM hoặc WB về

khâu EX. Để thực hiện phương pháp này ta thêm bộ dồn kênh vào trước bộ ALU. Tín

hiệu điều khiển lựa chọn nguồn toán hạng cho bộ dồn kênh sẽ được tính toán bởi khối

Hazard Detection. Bộ dồn kênh sẽ chuyển tiếp kết quả từ khâu (MEM hoặc WB) nếu

khâu đó thỏa mãn những điều kiện sau:

- Lệnh ở khâu đó thực hiện hành động viết vào thanh ghi

- Toán hạng đích ở khâu đó trùng với toán hạng nguồn ở khâu EX

- Nếu ở cả khâu MEM và WB đều có toán hạng đích trùng toán hạng nguồn ở EX

thì ưu tiên lựa chọn chuyển tiếp từ khâu MEM vì kết quả tính toán ở khâu MEM là

khâu được cập nhật gần nhất

Page 19: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

19

3.1.3. Xung đột đọc bộ nhớ dữ liệu:

a) Đặt vấn đề

Xung đột bộ nhớ dữ liệu xảy ra khi toán hạng đích chưa kịp được cập nhật dữ liệu

từ bộ nhớ ra để thực hiện câu lệnh tiếp theo.

Ví dụ xét đoạn lệnh

I1: lw $s0, 40($0)

I2: and $t0, $s0, $s1

I3: or $t1, $s4, $s0

I4: sub $t2, $s0, $s5

1 2 3 4 5 6 7 8

I1 IF ID EX MEM WB

I2 IF ID EX MEM WB

I3 IF ID EX MEM WB

I4 IF ID EX MEM WB

Page 20: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

20

Lệnh lw không thể hoàn thành việc đọc xong dữ liệu cho đến chu kì 4, vậy giá trị

của $s0 chưa thể được cập nhật.

b) Hướng giải quyết

Vậy để có thể giải quyết được xung đột trong trường hợp này chúng ta có thể thực

hiện phương pháp chờ.

Bằng cách đợi 1 chu kì như trên hình vẽ, dữ liệu của $s0 có thể được

chuyển tiếp để cập nhật được giá trị của $s0 kịp nạp vào khâu EX của lệnh I2. Đến

chu kì thứ 5 thì $s0 đã kịp thời được cập nhật.

Để thực hiện được việc chờ ta tiến hành thêm tín hiệu Stall vào các thanh

ghi pipeline( PC và IF/ID). Ban đầu các thanh ghi cập nhật giá trị đầu ra mỗi khi

có sườn lên clock, khi Stall xảy ra các thanh ghi pipeline giữ nguyên giá trị.

Ngoài ra, đồng thời với tiến hành Stall ở IF/ID và PC, ta còn tiến hành xóa thanh

ghi E để tránh việc dữ liệu sẽ bị chuyển tiếp một cách liên tục làm sai lệch kết quả

tính toán.

3.1.4. Xung đột điều khiển

a) Đặt vấn đề

Xung đột về điều khiển xảy ra khi thực hiện các lệnh rẽ nhánh. Khi 1 lệnh

rẽ nhánh xảy ra, nó sẽ k biết lệnh tiếp theo phải nạp là lệnh nào bởi tại thời điểm

nạp lệnh chưa xác định được kết quả của lệnh rẽ nhánh đó.

Page 21: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

21

Có 2 phương pháp để chống xung đột trong trường hợp này

o Làm chậm rẽ nhánh: Tiến hành chờ cho đến khi hết xung đột

o Dự đoán rẽ nhánh: Tiến hành nạp các lệnh kế tiếp, đến khi có kết quả của

lệnh rẽ nhánh bắt đầu xét xem rẽ nhánh đúng hay sai. Nếu đúng thì tiếp tục

thực hiện, nếu sai thực hiện xóa hết kết quả tính toán của các lệnh sai.

b) Hướng giải quyết

Trong nội dung bài ta tiến hành theo phương pháp dự đoán rẽ nhánh vì

phương pháp này cho hiệu năng cao hơn

Theo hình vẽ trên, nếu dự đoán rẽ nhánh sai sẽ phải xóa đi 3 lệnh làm giảm hiệu

năng của MIPS. Để tăng hiệu năng của phương pháp này, ta tiến hành dự đoán rẽ nhánh

sớm, nếu rẽ nhánh có sai cũng chỉ phải xóa đi 1 lệnh, cải thiện hiệu năng cho MIPS.

Page 22: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

22

Để tiến hành rẽ nhánh sớm, ta thêm 1 bộ so sánh vào đầu ra của tập thanh ghi. Vậy

kết quả của phép rẽ nhánh sẽ có sau khâu ID chứ không phải chờ đến khâu MEM theo

phương pháp thông thường

Page 23: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

23

Thực hiện phương pháp so sánh sớm dẫn đến 1 xung đột khác khi mà toán hạng

nguồn ở lệnh rẽ nhánh lại trùng với toán hạng đích ở những lệnh phía trước mà chưa kịp

ghi vào thanh ghi. Nếu kết quả của toán hạng đang ở khâu MEM, ta tiến hành phương

pháp chuyển tiếp dữ liệu từ khâu MEM về mỗi khi phát hiện có xung đột. Các bộ dồn

kênh sẽ tiếp tục được sử dụng trong trường hợp này . Bộ dồn kênh sẽ được điều khiển

bằng tín hiệu ForwardAD và ForwardBD lấy từ khối Hazard Detection. Biểu thức logic

của chúng được cho dưới đây:

ForwardAD = (rsD != 0) AND (rsD == WriteRegM) AND RegWriteM

ForwardBD =(rtD != 0) AND (rtD == WriteRegM) AND RegWriteM

Nếu gặp phải trường hợp phía trước rẽ nhánh là câu lệnh lw hoặc kết quả toán

hạng vẫn đang chỉ ở khâu EX thì khi đó ta phải chờ 1 chu kì để kết quả tính toán được

sẵn sàng. Dưới đây là biểu thức logic

StallF = StallD = FlushE = lwstall OR branchstall

branchstall = BranchD AND RegWriteE AND (WriteRegE == rsD OR WriteRegE == rtD) OR

BranchD AND MemtoRegM AND (WriteRegM == rsD OR WriteRegM == rtD)

Page 24: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

24

Sau 3 tiến trình giải quyết xung đột ta thu được sơ đồ cuối có dạng như hình vẽ

dưới

Page 25: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

25

III.Kết quả

1. Sơ đồ testbench

Hình 3:Sơ đồ TESTBENCH của bộ vi sử lý MIPS

2. Test code, kiểm thử xung đột

Nạp file memfile.dat chứa mã lệnh dạng hexa vào testbench và thực hiện bởi MIPS.

Kết quả thực hiện chương trình như sau:

main: addi $2, $0, 5

addi $3, $0, 12

addi $7, $3, _9

or $4, $7, $2

and $5, $3, $4

add $5, $5, $4

beq $5, $7, end

slt $4, $3, $4

beq $4, $0, around

addi $5, $0, 0

around: slt $4, $7, $2

add $7, $4, $5

Page 26: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

26

sub $7, $7, $2

sw $7, 68($3)

lw $2, 80($0)

addi $2, $0, 1

end: sw $2, 84($0)

Ta tính được số chu kì/lệnh: CPI = 20/16

Ta vào register file để xem kết quả thực hiện.Kết quả hiển thị trên trình mô phỏng đúng

với kết quả mong đợi khi đã giải quyết được xung đột.

Kết quả:

Giải quyết được bốn dạng xung đột cơ bản:

-Xung đột cấu trúc

-Xung đột đọc bộ nhớ dữ liệu

-Xung đột dữ liệu

-Xung đột điều khiển

Bằng cách sử dung 3 phương pháp giải quyết xung đột là :

- Forwarding

Page 27: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

27

- Stall

- Branch Pridiction

3. Các phương án giải quyết mở rộng:

Thuật toán Tomasulo được đưa ra vào năm 1967 bởi Robert Tomasulo làm việc

cho hang IBM.Ý tưởng của thuật toán là sử dụng địa chỉ Tag và bit trạng thái để đánh dấu

các thanh ghi, qua đó biết được thanh ghi đó đang bận hay rỗi để sử dụng cho phù hợp.

Định biểu (Schedualing): Sử dụng các vector trạng thái và bảng đặt chỗ

(reservation table) để dánh dấu các trạng thái của các tầng pipeline.Từ đó xác định được

số chu kỳ cần đưa dữ liệu vào để tránh xung đột.

Các kĩ thuật pipelining mới:

Superpipelining: (Siêu ống dẫn)

-Được sử dụng trong dòng VXL MIPS R4000.

-Tăng số tầng Pipeline từ 5 lên 8 tầng.

-Thời gian xử lý n lệnh: T superpiplining = t + (n - 1) * t /8

Tốc độ vi xử lý tăng đáng kể so với kỹ thuật Pipeline 5 tầng, nhưng cũng vì số

tầng tăng mà khả năng xảy ra xung đột cũng cao hơn

Các VXL hiện đại bắt đầu từ d.ng Pen IV sử dụng kỹ thuật ống dẫn

đôi (Dual Pipelining) để tăng tốc độ lên gấp nhiều lần so với kỹ thuật

Pipeline thông thường.

Page 28: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

28

Có thể lấy ví dụ đơn giản khi ta tính toán phép tính 14 * 47 + 5122, nếu là kỹ thuật

pipeline thông thường vẫn phải mất 3 bước là tính 5122, sau đó tính 14 * 27, rồi cuối

cùng cộng 2 kết quả đó lại. Nhưng với kỹ thuật ống dẫn đôi, 2 phép tính 5122 và 14 *

47 được thực hiện cùng 1 lúc trên 2 pipeline khác nhau => giảm được 1 công đoạn thực

hiện tính toán.

4. Hướng phát triển:

-Thiết kế thêm lệnh cho bộ xử lý MIPS

-Thêm tín hiệu ready cho bộ nhớ đọc và ghi

-Mở rộng giải quyết hazard.

-Thêm bộ nhân và bộ chia cho MIPS

-Tối ưu hóa diện tích MIPS

-Áp dụng các kĩ thuật mới vào thiết kế MIPS

Page 29: 249340669 bao-cao-ktmt

Bài tập lớn kiến trúc máy tính 2013

29

C.Kết luận Sau kì học vừa qua, nhóm em đã hoàn thành bài tập lớn với đề tài thiết kế MIPS

32 bit thực hiện được những lệnh cơ bản. Đề tài thiết kế MIPS là đề tài mang tính thực tế

cao, giúp chúng em thêm hiểu về cấu trúc của bộ vi sử lý MIPS, hỗ trợ cho việc học môn

kiến trúc máy tính.

Quá trình thực hiện bài tập lớn đã giúp chúng em tích lũy thêm được nhiều kinh

nghiệm thiết kế phần cứng.Rèn luyện tư duy phần cứng ,thêm hiểu rõ về bộ vi xử lý rất

thông dụng trên thị trường. Đặc biệt hơn cả, quá trình này cũng giúp chúng em rèn luyện

kĩ năng làm việc nhóm hiệu quả.

Chúng em xin gửi lời cảm ơn chân thành đến cô giáo Tạ Thị Kim Huệ đã giúp

chúng em hoàn thành đề tài này.