1. Trang chủ
  2. » Luận Văn - Báo Cáo

Thiết kế MIPS 32 bit

29 2,1K 7

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 29
Dung lượng 1,22 MB

Nội dung

Thiết kế MIPS 32 bit

Trang 1

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

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

Trang 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

Trang 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

Trang 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

Trang 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

Trang 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)

 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

Trang 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

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ì

Trang 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

Trang 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

Trang 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,

Trang 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

Trang 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ẽ

Trang 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

Trang 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

Trang 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

Trang 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

Ngày đăng: 28/09/2015, 19:07

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w