SlideShare a Scribd company logo
1 of 24
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN ĐÀO TẠO SAU ĐẠI HỌC
BÀI TẬP LỚN
KIỂM CHỨNG VI MẠCH
Đề tài:
KIỂM CHỨNG BẰNG PHƯƠNG PHÁP MÔ
PHỎNG BỘ XỬ LÝ MIPS
Nhóm thực hiện: LÊ DOÃN THIỆN
CÙ XUÂN TOẢN
LÊ THỊ ÁNH NGỌC
Giảng viên hướng dẫn: TS. NGUYỄN ĐỨC MINH
Hà Nội, 1-2015
1
MỤC LỤC
MỤC LỤC...........................................................................................................................................................................1
Phần 1. Tổng quan dòng vi xử lý MIPS ................................................................................................................2
1.1 Lịch sử phát triển................................................................................................................................................2
1.2 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) ......3
1.3 Nguyên tắc thiết kế bộ MIPS.............................................................................................................................4
1.4 Một số lệnh sử dụng trong MIPS .....................................................................................................................5
1.5 Phân loại MIPS...................................................................................................................................................6
1.5.1. Thiết kế đơn xung nhịp ............................................................................................................................6
1.5.2. Thiết kế đa xung nhịp...............................................................................................................................6
1.5.3. Thiết kế pipeline........................................................................................................................................7
1.6 Các ứng dụng của bộ xử lý MIPS ..................................................................................................................10
Phần 2. Phân tích và thực hiện kiểm chứng ......................................................................................................12
2.1 Lựa chọn phương pháp kiểm chứng ..............................................................................................................12
2.1.1. Tầm quan trọng của kiểmchứng thiết kế............................................................................................12
2.1.2. Các loại kiểmchứng trong quy trình thiết kế vi mạch ......................................................................12
2.2 Mô hình kiểm chứng.........................................................................................................................................13
2.3 Thực hiện thiết kế MIPS Pipeline...................................................................................................................13
2.3.1. Yêu cầu thiết kế .......................................................................................................................................13
2.3.2. Sơ đồ thiết kế ...........................................................................................................................................14
2.3.3. Thiết kế chi tiết từng khối......................................................................................................................15
2.4 Thực hiện các phép toán trong MIPS dùng C++........................................................................................18
Phần 3. Kết quả tổng hợp và mô phỏng..............................................................................................................21
3.1 Sơ đồ khối của sản phẩm.................................................................................................................................21
3.2 Thuật toán, linh kiện, kiến trúc mạch............................................................................................................21
Phần 4. Đánh giá kết quả và hướng phát triển .................................................................................................22
2
Phần 1. Tổng quan dòng vi xử lý MIPS
1.1 Lịch sử phát triển
MIPS viết tắt của Microprocessor without Interlocked Pipeline Stages, là kiến trúc bộ tập
lệnh RISC phát triển bởi MIPS Technologies [1].
Bộ xử lý MIPS đầu tiên được nghiên cứu vào năm 1981 bởi một nhóm các nhà nghiên cứu
thuộc đại học Stanford do John L. Hennessy đứng đầu, với mục đich 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 (pipeline instructions),
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ệnh trướ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 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 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.
Đến 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
3
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
1.2 Các sảnphẩ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 thế hệ MIPS khởi đầu là kiến trúc 32 bit sau mở rộng ra 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.
Các dòng vi xử lý MIPS thương mại đã được 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 32 bit,
nhưng không có thanh ghi mã điều kiện. R2000 cũng hỗ trợ tới 4 bộ xử lý, một
trong số đó đảm nhiệm việc xử lý các ngoại lệ và bẫy trong khi ba chiếc còn lại sử
dụng cho các mục đích khác. Điều này được hỗ trợ trong R2010 FTU - bộ xử lý có
32 thanh ghi 32 bit có thể được sử dụng như là 16 thanh ghi 64 bit cho kết quả
chính xác gấp đôi.
 R3000
Theo sau R2000 vào năm 1998, nó bổ sung thêm 32kB Cache (và sớm được tăng
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 - một tính năng phổ biến của
CPUs kỷ nguyên này. R3000 trở thành thiết kế MIPS đầu tiên thành công trong
lĩnh vực thương mại. R3000A được sử dụng cực kỳ thành công trong các máy
Sony PlayStation, chạy với tốc độ 40 MHz, truyền thông tin ở tốc độ 32 câu lệnh
trong 1 giây. R3000 cũng đi kèm với R3100 FTU trong cùng một chip đơn. Các
hãng khác cũng tham gia sản xuất như Pacemips với R3400, IDT với R3500.
R3900 của Toshiba là chíp đầu tiên dạng SoC (System on a Chip) được
sử dụng trong các máy tính cá nhân cầm tay sử dụng hệ điều hành Windows CE.
 R4000
4
Được đưa ra vào năm 1991, mở rộng tập lệnh MIPS để hỗ trợ đầy đủ kiến trúc
64 bit, chuyển FTU vào main để tạo ra một hệ thống chip đơn lẻ (Single-chip
system), xử lý với tốc độ lên tới 100Mhz, tuy nhiên để đạt được tốc độ này bộ
nhớ đệm phải bị giảm xuống còn 8kB và cần 3 chu kỳ để truy cập. Tần số xử lý
cao đạt được nhờ việclưu trữ thông qua công nghệ đường ống sâu (deep pipelining
– hay còn gọi là super-pipelining tại thời điểm đó). 1993 R4400 xuất hiện với 16kB
cache, bộ xử lý 64 bit lớn và 1 bộ điều khiển cache mở rộng lên tới 1MB (cahe
level 2). 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)
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 mở rộng tới 6 chip, hỗ trợ 4MB cache mở
rộng.
 R10000 (1995)
Là một thiết kế chip đơn lẻ, chạy ở tốc độ cao hơn R8000, có 32kB cache chính cho
các câu lệnh và dữ liệu. Các thiết kế tiếp theo của R1000 là R12000 và R14000 với
hỗ trợ DDR SRAM trong cache và tốc độ lên tới 200 MHz. Ngoài ra còn các thiết
kế R16000, R16000A, R6000.
1.3 Nguyên tắc thiết kế bộ 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)
5
− 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ị [1]:
+ R-chỉ thị thanh ghi: 2 toán hạng nguồn thanh ghi, 1 toán hạng
đích thanh ghi.
+ I-chỉ thị trực tiếp: 1 toán hạng nguồn thanh ghi, 1 toán hạng
nguồn trực tiếp, 1 toán hạng đích thanh ghi.
+ J-chỉ thị nhảy: 1 toán hạng nguồn trực tiếp.
Hình 3.1 Ba định dạng chỉ thị lệnh
1.4 Một số lệnh sử dụng trong MIPS
Sau đây là các lệnh được sử dụng trong MIPS 32 bits[2]:
6
Bảng 3.1 Lệnh của MIPS 32 bits
1.5 Phân loại MIPS
1.5.1. Thiết kế đơn xung nhịp
Là thiết kế mà các pha thực hiện: nạp, giải mã and thực hiện, ghi của mỗi lệnh trong một
chu kỳ đồng hồ [3]:
Hình 3.2 Thiết kế đơn xung nhịp
 Ư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ả – 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ồ.
1.5.2. Thiết kế đa xung nhịp
Là thiết kế mà 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 [4].
7
Hình 3.3 Thiết kế đa xung nhịp
 Ưu điểm:
− 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.
 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.
1.5.3. Thiết kế pipeline
Khác với thiết kế đơn xung nhịp khi các lệnh đều được thực hiện xong trong một
chu kì máy, thiết kế pipeline chia một câu lệnh ra thành 5 bước (steps) [5]:
8
Hình 3.4 Các bước thực hiện lệnh
− 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ệnhR, 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:
Hình 3.5 Chu trình thực hiện lệnh
Dưới đây là sơ đồ kiến trúc MIPS khi thực hiện theo pipeline:
Hình 3.6 Sơ đồ kiến trúc MIPS pipeline
Các bước thực hiện một câu lệnh:
9
 Đọ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):
− 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.
10
1.6 Các ứng dụng của bộ xử lý MIPS
Kiến trúc MIPS được sử dụng rộng rãi trong các ứng dụng công nghiệp như DVD player,
Netwoking, camera số,…
 DVD player
(Pioneer DVR-
57H)
 Networking
3COM – 3102 Business IP Phone
3COM – 3106 Cordless Phone
11
Canon EOS 450D
Sony playstation PSX (CPU Type: LSI/MIPS R3000A, Architecture: 32 bit,
Clockspeed 33,8 MHz)
Sony Playstation Portable ( CPU 333MHz MIPS R4000) [2]
12
Phần 2. Phân tích và thực hiện kiểm chứng
Phần này phân tích và phân chia các chức năng của sản phẩm từ đó lập ra kế hoạch thiết
kế, phát triển sản phẩm.
2.1 Lựa chọn phương pháp kiểm chứng
2.1.1. Tầm quan trọng của kiểm chứng thiết kế
Kiểm chứng vi mạch là quá trình tìm kiếm phát hiện lỗi trong thiết kế vi mạch.
Lỗi trong thiết kế vi mạch là sự sai khác trong hoạt động của thiết kế với yêu cầu kỹ thuật
đặt ra. Những lỗi này có thể xảy ra trong quá trình thiết kế, quá trình sản xuất vi mạch hoặc
quá trình sử dụng vi mạch trong hệ thống. Dù là lỗi xảy ra trong quá trình nào thì chi phí
để khắc phục cũng thường khá lớn do đó cần phát hiện sớm lỗi để tránh tốn nhiều thời
gian, công sức và tiền bạn để sửa lỗi.
2.1.2. Các loại kiểm chứng trong quy trình thiết kế vi mạch
Một số loại kiểm chứng thường dùng trong quy trình thiết kế vi mạch là kiểm chứng bằng
hình vẽ, kiểm chứng dùng mô phỏng và kiểm chứng hình thức.
Kiểm chứng mô phỏng Kiểm chứng hình thức
Kiểm chứng dựa trên xung nhịp. Các giá trị
đầu vào được đưa vào bản thiết kế hệ thống
và cho phép máy tính thực hiện việc tính
toán đầu ra
Kiểm chứng dùng các công thức, mô hình
toán học để mô hình hệ thống và chứng
minh tính hoạt động đúng của mạch.
Ưu điểm:
 Trực quan với người sử dụng
 Không quá khó để thiết lập hệ thống
mô phỏng vi mạch
Ưu điểm:
 Khả năng tìm được lỗi cao hơn
 Thời gian kiểm chứng có thể nhỏ
hơn
 Độ bao phủ lớn hơn
Nhược điểm:
 Độ bao phủ không cao
 Tốn tài nguyên tính toán, mất nhiều
thời gian để mô phỏng hết các
trường hợp kiểm chứng cho vi mạch.
Tối ưu mạch ảnh hưởng lớn đến tốc
độ mô phỏng
Nhược điểm:
 Khó hình dung và thiết lập mô hình
toán học cho mạch
 Quy trình thiết lập mô hình toán học
mất nhiều thời gian
13
Thông qua việc phân tích các phương pháp kiểm chứng, đồng thời dựa vào giới hạn thời
gian hoàn thành đề tài cũng như mức độ phức tạp của kiến trúc MIPS, nhóm sẽ tiến hành
thực hiện kiểm chứng bộ MIPS pipeline dùng phương pháp mô phỏng.
2.2 Mô hình kiểm chứng
Nguyên tắc cơ bản của kiểm chứng là tạo sự dư thừa nên nhóm quyết định tạo một dạng
triển khai khác của thiết kế, sau đó tiến hành so sánh hai dạng triển khai.
Phương hướng triển khai:
 Xây dựng mô hình thiết kế MIPS Pipeline ở mức RTL dùng ngôn ngữ Verilog và
công cụ Quatus của Altera.
 Xây dựng mô hình tính giá trị đúng của các phép toán dùng ngôn ngữ C/C++ và sử
dụng visual express 2010.
 Mô phỏng hai mô hình đồng thời và so sánh kết quả.
2.3 Thực hiện thiết kế MIPS Pipeline
2.3.1. Yêu cầu thiết kế
 Yêu cầu chức năng
 Bộ xử lý MIPS 32 bit có khả năng thực hiện các lệnh cơ bản như các phép
toán số học (cộng, trừ, nhân …), truy cập bộ nhớ với hai chỉ thị (lw, sw),
lưu trữ, đọc và ghi dữ liệu …
 Thực hiện bằng ngôn ngữ mô tả phần cứng VerilogHDL.
 Giải quyết được các xung đột cơ bản trong MIPS Pipeline.
 Yêu cầu phi chức năng
14
Bộ xử lý MIPS sau khi được thiết kế không chỉ đạt những chức năng kĩ thuật mà
cần đạt yêu cầu phi chức năng như sau:
 Dễ sử dụng trong việc mô phỏng
 Đáp ứng được các câu lệnh cơ bản
 Dễ dàng nâng cấp và sửa lỗi khi cần thiết.
 Giá thành hợp lý
 MIPS hoạt động ổn định và có độ tin cậy cao
 Năng lượng tiêu thụ thấp
Tuy nhiên trong khuôn khổ của bài tập lớn này, chúng em chỉ dừng lại ở việc
nghiên cứu và mô tả kiến trúc của bộ xử lý MIPS, không đặt vấn đề giá thành
làm một tiêu chí đánh giá.
2.3.2. Sơ đồ thiết kế
Các thông số đầu vào và đầu ra của thiết kế:
Cổng Số bit Hướng Mô tả
IReady 1 Input Tín hiệu báo bộ nhớ lệnh sẵn
sàng gửi dữ liệu
IData 32 Input Mã lệnh được lấy từ bộ nhớ lệnh
DataIn 32 Input Dữ liệu được đọc ra từ bộ nhớ dữ
liệu
15
DReady 1 Input Tín hiệu điều khiển việc đọc dữ
liệu vào từ bộ nhớ dữ liệu
IAddr 30 Output Địa chỉ lệnh trong bộ nhớ lệnh
cần thực thi
IRead 1 Output Tín hiệu điều khiển việc đọc địa
chỉ chứa lệnh cần thực thi trong
bộ nhớ lệnh
DRead 1 Output Tín hiệu điều khiển việc đọc từ
bộ nhớ dữ liệu
DAddr 30 Output Địa chỉ trong bộ nhớ dữ liệu cần
đọc/ghi dữ liệu
DWrite 4 Output Tín hiệu điều khiển việc ghi vào
bộ nhớ dữ liệu
DataOut 32 Output Dữ liệu được ghi vào bộ nhớ dữ
liệu
2.3.3. Thiết kế chi tiết từng khối
Trong phần này nhóm sẽ tập trung trình bày một số khối quan trọng trong kiến trúc MIPS
Pipeline
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
+) Tín hiệu ALUControl
16
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
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.
17
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ẽ:
Ở đ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.
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
18
2.4 Thực hiện các phép toán trong MIPS dùng C++
Trong phần này nhóm sử dụng các phép toán có trong thư viện C để tính toán. Các
phép toán (Instruction) được sử dụng là : cộng, trừ, nhân, chia được mã hóa tương ứng với
các số từ 0 đến 3 và được sinh ngẫu nhiên trong file Instruction.txt, các toán hạng(Data)
cũng được sinh ra ngẫu nhiên trong file data.txt. Các giá trị trong hai file này cũng là đầu
vào cho quá trình mô phỏng mạch bằng techbench. Sau khi tính toán bằng các phép toán có
trong thư viện C, kết quả đầu ra sẽ được ghi vào file output.txt.
Hình bên dưới sẽ minh họa cho quá trình tính toán sử dụng thư viện C:
Kết quả so sánh giá trị đầu ra của hai kiểu tính toán sẽ kiểm chứng độ chính xác của việc
thiết kết mạnh (verilog). Từ đó ta có thể phát hiện các lỗi (nếu có) trong quá trình thiết kế.
19
Code C++:
#include<iostream>
#include<stdio.h>
#include<conio.h>
#include <cstdlib>
#include<ctime>
using namespace std;
long add (long a, long b);
long sub (long a, long b);
long mul (long a, long b);
long divi (long a, long b);
int main()
{
int A[100],B[100],KQ[100];
long i,j ,a,b ;
int test_case;
srand(time(0));
//Lấy giá trị toán hạng ngẫu nhiên rồi đưa vào file Toanhang.txt
freopen("instruction.txt","w",stdout);
for (int n=1;n<=50;n++)
{
int x=rand()%4;
cout<<x<<" ";
}
fclose(stdout);
//Lấy hai toán tử ngẫu nhiên rồi đưa vào file đầu vào input.txt
freopen("data.txt","w",stdout);
for (int m=1;m<=50;m++)
{
//srand(time(0));
a = rand();
b = rand();
cout<<a<<" "<<b<<endl ;
}
fclose(stdout);
//Cho toán hạng vào mảng A
freopen("data.txt","r",stdin);
for ( i=1;i<=50;i++)
{
cin>>A[i*2-1]>>A[i*2];
}
fclose(stdin);
//Cho toán tử vào mảg B
freopen("instruction.txt","r",stdin);
for ( j=1;j<=50;j++)
cin>>B[j];
fclose(stdin);
for (test_case=1;test_case<=50;test_case++){
switch (B[test_case])
{
20
case 0: {
KQ[test_case]=add(A[test_case*2-1],A[test_case*2]);
break;
}
case 1: {
KQ[test_case]=sub(A[test_case*2-1],A[test_case*2]);
break;
}
case 2:{
KQ[test_case]=mul(A[test_case*2-1],A[test_case*2]);
break;
}
case 3:{
KQ[test_case]=divi(A[test_case*2-1],A[test_case*2]);
break;
}
default: cout<< "ma lenh sai";
}
}
// ghi kết quả vào file đầu ra output.txt
freopen("output.txt","w",stdout);
for (int k=1;k<=50;k++)
cout<<KQ[k]<<" ";
fclose(stdout);
}
long add(long a,long b)
{
return a+b;
}
long sub (long a,long b)
{
return a-b;
}
long mul(long a,long b)
{
return a*b;
}
long divi ( long a, long b)
{
return a/b;
}
21
Phần 3. Kết quả tổng hợp và mô phỏng
Phần này trình bày về các phương án kỹ thuật được sử dụng để thiết kế sản phẩm.
Có thể là lựa chọn các linh kiện phần cứng cho mạch.
Có thể là lựa chọn thuật toán thực hiện một chức năng mạch.
Có thể là lựa chọn kiến trúc mạch
3.1 Sơ đồ khối của sản phẩm
Phần này làm rõ các khối thực hiện chức năng trong mạch, kết nối và giao tiếp giữa các
khối. Phần này phải làm rõ được tín hiệu vào và ra khỏi từng khối.
3.2 Thuật toán, linh kiện, kiến trúc mạch
Phần này làm rõ việc lựa chọn thuật toán hay linh kiện phần cứng hay kiến trúc mạch để
thực hiện các khối chức năng
Mỗi khối chức năng nên nêu ra ít nhất 2 phương án thực hiện và lựa chọn dựa trên các tiêu
chí kỹ thuật định lượng.
22
Phần 4. Đánh giá kết quả và hướng phát triển
Phần này mô tả việc thiết kế cụ thể từng khối chức năng.
Nếu là mạch phần cứng thì trình bày sơ đồ nguyên lý, mô phỏng sơ đồ nguyên lý của
mạch.
Nếu là phần mềm thì trình bày lưu đồ thuật toán, cấu trúc dữ liệu, khai báo các hàm.
23
[1] http://en.wikipedia.org/wiki/MIPS_instruction_set, truy cập ngày 25/01/2015.
[2] http://en.wikipedia.org/wiki/PlayStation_Portable, truy cập ngày 25/01/2015.

More Related Content

What's hot

2 kien truc phan mem
2 kien truc phan mem2 kien truc phan mem
2 kien truc phan memLy hai
 
Kiến trúc máy tính và hợp ngữ bài 04
Kiến trúc máy tính và hợp ngữ bài 04Kiến trúc máy tính và hợp ngữ bài 04
Kiến trúc máy tính và hợp ngữ bài 04Nhóc Nhóc
 
Kiến trúc máy tính
Kiến trúc máy tínhKiến trúc máy tính
Kiến trúc máy tínhLE The Vinh
 
Kiến Trúc Luân Phiên
Kiến Trúc Luân PhiênKiến Trúc Luân Phiên
Kiến Trúc Luân PhiênThieu Mao
 
60318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-201060318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-2010Em Cu
 
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tính
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tínhNgân hàng câu hỏi trắc nghiệm kiến trúc máy tính
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tínhkakalaxaxa
 
Bai giang cau_truc_may_tinh
Bai giang cau_truc_may_tinhBai giang cau_truc_may_tinh
Bai giang cau_truc_may_tinhThùy Linh
 
BGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhBGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhCao Toa
 
3 To chuc bo vi xu ly
3 To chuc bo vi xu ly3 To chuc bo vi xu ly
3 To chuc bo vi xu lyLy hai
 
Vi xử lý cấu trúc máy tính
Vi xử lý cấu trúc máy tínhVi xử lý cấu trúc máy tính
Vi xử lý cấu trúc máy tínhleeduy
 
vxl.vdk.TranThanhPhong
vxl.vdk.TranThanhPhongvxl.vdk.TranThanhPhong
vxl.vdk.TranThanhPhongLong Tran Huy
 
Tim hieu thanh ghi in asm
Tim hieu thanh ghi in asmTim hieu thanh ghi in asm
Tim hieu thanh ghi in asmMy Đá
 
Cấu tạo và nguyên lý hoạt động cpu
Cấu tạo và nguyên lý hoạt động cpuCấu tạo và nguyên lý hoạt động cpu
Cấu tạo và nguyên lý hoạt động cpubeu09vn
 
Tongquanktmt
TongquanktmtTongquanktmt
TongquanktmtTung Luu
 
Chuong02
Chuong02Chuong02
Chuong02na
 
kiến trúc máy tính và hợp ngữ Bài 00
kiến trúc máy tính và hợp ngữ Bài 00kiến trúc máy tính và hợp ngữ Bài 00
kiến trúc máy tính và hợp ngữ Bài 00Nhóc Nhóc
 

What's hot (20)

2 kien truc phan mem
2 kien truc phan mem2 kien truc phan mem
2 kien truc phan mem
 
Kiến trúc máy tính và hợp ngữ bài 04
Kiến trúc máy tính và hợp ngữ bài 04Kiến trúc máy tính và hợp ngữ bài 04
Kiến trúc máy tính và hợp ngữ bài 04
 
Kiến trúc máy tính
Kiến trúc máy tínhKiến trúc máy tính
Kiến trúc máy tính
 
Kiến Trúc Luân Phiên
Kiến Trúc Luân PhiênKiến Trúc Luân Phiên
Kiến Trúc Luân Phiên
 
Ktmt chuong 1
Ktmt chuong 1Ktmt chuong 1
Ktmt chuong 1
 
Bai tap3
Bai tap3Bai tap3
Bai tap3
 
60318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-201060318032 baigiang-ktmt-2010
60318032 baigiang-ktmt-2010
 
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tính
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tínhNgân hàng câu hỏi trắc nghiệm kiến trúc máy tính
Ngân hàng câu hỏi trắc nghiệm kiến trúc máy tính
 
Bai giang cau_truc_may_tinh
Bai giang cau_truc_may_tinhBai giang cau_truc_may_tinh
Bai giang cau_truc_may_tinh
 
BGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tínhBGKTMT Ch2 tổ chức hệ thống máy tính
BGKTMT Ch2 tổ chức hệ thống máy tính
 
3 To chuc bo vi xu ly
3 To chuc bo vi xu ly3 To chuc bo vi xu ly
3 To chuc bo vi xu ly
 
Ktmt chuong 5
Ktmt chuong 5Ktmt chuong 5
Ktmt chuong 5
 
Cau truc may tinh
Cau truc may tinhCau truc may tinh
Cau truc may tinh
 
Vi xử lý cấu trúc máy tính
Vi xử lý cấu trúc máy tínhVi xử lý cấu trúc máy tính
Vi xử lý cấu trúc máy tính
 
vxl.vdk.TranThanhPhong
vxl.vdk.TranThanhPhongvxl.vdk.TranThanhPhong
vxl.vdk.TranThanhPhong
 
Tim hieu thanh ghi in asm
Tim hieu thanh ghi in asmTim hieu thanh ghi in asm
Tim hieu thanh ghi in asm
 
Cấu tạo và nguyên lý hoạt động cpu
Cấu tạo và nguyên lý hoạt động cpuCấu tạo và nguyên lý hoạt động cpu
Cấu tạo và nguyên lý hoạt động cpu
 
Tongquanktmt
TongquanktmtTongquanktmt
Tongquanktmt
 
Chuong02
Chuong02Chuong02
Chuong02
 
kiến trúc máy tính và hợp ngữ Bài 00
kiến trúc máy tính và hợp ngữ Bài 00kiến trúc máy tính và hợp ngữ Bài 00
kiến trúc máy tính và hợp ngữ Bài 00
 

Similar to Kiem chung vi_mach_report_update

TÀI LIỆU ĐÁP ÁN VÀ CÂU HỎI KIỂM TRA, SÁT HẠCH KIẾN THỨC CHUYÊN NGÀNH.Tuyển dụ...
TÀI LIỆU ĐÁP ÁN VÀ CÂU HỎI KIỂM TRA, SÁT HẠCH KIẾN THỨC CHUYÊN NGÀNH.Tuyển dụ...TÀI LIỆU ĐÁP ÁN VÀ CÂU HỎI KIỂM TRA, SÁT HẠCH KIẾN THỨC CHUYÊN NGÀNH.Tuyển dụ...
TÀI LIỆU ĐÁP ÁN VÀ CÂU HỎI KIỂM TRA, SÁT HẠCH KIẾN THỨC CHUYÊN NGÀNH.Tuyển dụ...nataliej4
 
Embedded linux edited
Embedded linux editedEmbedded linux edited
Embedded linux editedNguyễn Anh
 
Lệnh CMD_NewStar-LPI1.pdf
Lệnh CMD_NewStar-LPI1.pdfLệnh CMD_NewStar-LPI1.pdf
Lệnh CMD_NewStar-LPI1.pdfTruongVanTuyen3
 
chuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.pptchuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.pptSangL72
 
BTL-NMDT_GROUP4
BTL-NMDT_GROUP4BTL-NMDT_GROUP4
BTL-NMDT_GROUP4Nhok Ly
 
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...Man_Ebook
 
BTL - NMĐT - Nhóm 4 - MT1405
BTL - NMĐT - Nhóm 4 - MT1405BTL - NMĐT - Nhóm 4 - MT1405
BTL - NMĐT - Nhóm 4 - MT1405Nhok Ly
 
Quan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linuxQuan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linuxThu Lam
 
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdfĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdfMan_Ebook
 
Tìm hiểu về Linux
Tìm hiểu về LinuxTìm hiểu về Linux
Tìm hiểu về LinuxNhan Nguyen
 
Bai 01 tong quan ve phan cung may tinh
Bai 01  tong quan ve phan cung may tinhBai 01  tong quan ve phan cung may tinh
Bai 01 tong quan ve phan cung may tinhQuang Nguyễn Thái
 

Similar to Kiem chung vi_mach_report_update (20)

Bai Tap Vi Xu Ly
Bai Tap Vi Xu LyBai Tap Vi Xu Ly
Bai Tap Vi Xu Ly
 
Bao cao vdk_va_pic
Bao cao vdk_va_picBao cao vdk_va_pic
Bao cao vdk_va_pic
 
TÀI LIỆU ĐÁP ÁN VÀ CÂU HỎI KIỂM TRA, SÁT HẠCH KIẾN THỨC CHUYÊN NGÀNH.Tuyển dụ...
TÀI LIỆU ĐÁP ÁN VÀ CÂU HỎI KIỂM TRA, SÁT HẠCH KIẾN THỨC CHUYÊN NGÀNH.Tuyển dụ...TÀI LIỆU ĐÁP ÁN VÀ CÂU HỎI KIỂM TRA, SÁT HẠCH KIẾN THỨC CHUYÊN NGÀNH.Tuyển dụ...
TÀI LIỆU ĐÁP ÁN VÀ CÂU HỎI KIỂM TRA, SÁT HẠCH KIẾN THỨC CHUYÊN NGÀNH.Tuyển dụ...
 
Embedded linux edited
Embedded linux editedEmbedded linux edited
Embedded linux edited
 
Lệnh CMD_NewStar-LPI1.pdf
Lệnh CMD_NewStar-LPI1.pdfLệnh CMD_NewStar-LPI1.pdf
Lệnh CMD_NewStar-LPI1.pdf
 
TỰ HỌC LPI 1
TỰ HỌC LPI 1 TỰ HỌC LPI 1
TỰ HỌC LPI 1
 
chuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.pptchuong1_gioi thieu ve .he thong VLSI.ppt
chuong1_gioi thieu ve .he thong VLSI.ppt
 
BTL-NMDT_GROUP4
BTL-NMDT_GROUP4BTL-NMDT_GROUP4
BTL-NMDT_GROUP4
 
Đề tài: Thiết kế và thi công mô hình công viên 4.0, HOT, 9đ
Đề tài: Thiết kế và thi công mô hình công viên 4.0, HOT, 9đĐề tài: Thiết kế và thi công mô hình công viên 4.0, HOT, 9đ
Đề tài: Thiết kế và thi công mô hình công viên 4.0, HOT, 9đ
 
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
Thiết kế và chế tạo 8 mô hình thực hành môn vi điều khiển sử dụng vi điều khi...
 
Risc
RiscRisc
Risc
 
Linux+01
Linux+01Linux+01
Linux+01
 
BTL - NMĐT - Nhóm 4 - MT1405
BTL - NMĐT - Nhóm 4 - MT1405BTL - NMĐT - Nhóm 4 - MT1405
BTL - NMĐT - Nhóm 4 - MT1405
 
Quan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linuxQuan ly bo nho ngoai trong linux
Quan ly bo nho ngoai trong linux
 
Linux01 tongquan
Linux01 tongquanLinux01 tongquan
Linux01 tongquan
 
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdfĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
ĐỒ ÁN MÔN HỌC HỆ THỐNG NHÚNG MẠNG KHÔNG DÂY - Contiki OSreport.pdf
 
Tìm hiểu về Linux
Tìm hiểu về LinuxTìm hiểu về Linux
Tìm hiểu về Linux
 
Bai 01 tong quan ve phan cung may tinh
Bai 01  tong quan ve phan cung may tinhBai 01  tong quan ve phan cung may tinh
Bai 01 tong quan ve phan cung may tinh
 
Su dung linux shell
Su dung linux shellSu dung linux shell
Su dung linux shell
 
Su dung linux shell
Su dung linux shellSu dung linux shell
Su dung linux shell
 

Kiem chung vi_mach_report_update

  • 1. TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN ĐÀO TẠO SAU ĐẠI HỌC BÀI TẬP LỚN KIỂM CHỨNG VI MẠCH Đề tài: KIỂM CHỨNG BẰNG PHƯƠNG PHÁP MÔ PHỎNG BỘ XỬ LÝ MIPS Nhóm thực hiện: LÊ DOÃN THIỆN CÙ XUÂN TOẢN LÊ THỊ ÁNH NGỌC Giảng viên hướng dẫn: TS. NGUYỄN ĐỨC MINH Hà Nội, 1-2015
  • 2. 1 MỤC LỤC MỤC LỤC...........................................................................................................................................................................1 Phần 1. Tổng quan dòng vi xử lý MIPS ................................................................................................................2 1.1 Lịch sử phát triển................................................................................................................................................2 1.2 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) ......3 1.3 Nguyên tắc thiết kế bộ MIPS.............................................................................................................................4 1.4 Một số lệnh sử dụng trong MIPS .....................................................................................................................5 1.5 Phân loại MIPS...................................................................................................................................................6 1.5.1. Thiết kế đơn xung nhịp ............................................................................................................................6 1.5.2. Thiết kế đa xung nhịp...............................................................................................................................6 1.5.3. Thiết kế pipeline........................................................................................................................................7 1.6 Các ứng dụng của bộ xử lý MIPS ..................................................................................................................10 Phần 2. Phân tích và thực hiện kiểm chứng ......................................................................................................12 2.1 Lựa chọn phương pháp kiểm chứng ..............................................................................................................12 2.1.1. Tầm quan trọng của kiểmchứng thiết kế............................................................................................12 2.1.2. Các loại kiểmchứng trong quy trình thiết kế vi mạch ......................................................................12 2.2 Mô hình kiểm chứng.........................................................................................................................................13 2.3 Thực hiện thiết kế MIPS Pipeline...................................................................................................................13 2.3.1. Yêu cầu thiết kế .......................................................................................................................................13 2.3.2. Sơ đồ thiết kế ...........................................................................................................................................14 2.3.3. Thiết kế chi tiết từng khối......................................................................................................................15 2.4 Thực hiện các phép toán trong MIPS dùng C++........................................................................................18 Phần 3. Kết quả tổng hợp và mô phỏng..............................................................................................................21 3.1 Sơ đồ khối của sản phẩm.................................................................................................................................21 3.2 Thuật toán, linh kiện, kiến trúc mạch............................................................................................................21 Phần 4. Đánh giá kết quả và hướng phát triển .................................................................................................22
  • 3. 2 Phần 1. Tổng quan dòng vi xử lý MIPS 1.1 Lịch sử phát triển MIPS viết tắt của Microprocessor without Interlocked Pipeline Stages, là kiến trúc bộ tập lệnh RISC phát triển bởi MIPS Technologies [1]. Bộ xử lý MIPS đầu tiên được nghiên cứu vào năm 1981 bởi một nhóm các nhà nghiên cứu thuộc đại học Stanford do John L. Hennessy đứng đầu, với mục đich 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 (pipeline instructions), 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ệnh trướ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 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 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. Đến 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
  • 4. 3 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 1.2 Các sảnphẩ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 thế hệ MIPS khởi đầu là kiến trúc 32 bit sau mở rộng ra 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. Các dòng vi xử lý MIPS thương mại đã được 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 32 bit, nhưng không có thanh ghi mã điều kiện. R2000 cũng hỗ trợ tới 4 bộ xử lý, một trong số đó đảm nhiệm việc xử lý các ngoại lệ và bẫy trong khi ba chiếc còn lại sử dụng cho các mục đích khác. Điều này được hỗ trợ trong R2010 FTU - bộ xử lý có 32 thanh ghi 32 bit có thể được sử dụng như là 16 thanh ghi 64 bit cho kết quả chính xác gấp đôi.  R3000 Theo sau R2000 vào năm 1998, nó bổ sung thêm 32kB Cache (và sớm được tăng 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 - một tính năng phổ biến của CPUs kỷ nguyên này. R3000 trở thành thiết kế MIPS đầu tiên thành công trong lĩnh vực thương mại. R3000A được sử dụng cực kỳ thành công trong các máy Sony PlayStation, chạy với tốc độ 40 MHz, truyền thông tin ở tốc độ 32 câu lệnh trong 1 giây. R3000 cũng đi kèm với R3100 FTU trong cùng một chip đơn. Các hãng khác cũng tham gia sản xuất như Pacemips với R3400, IDT với R3500. R3900 của Toshiba là chíp đầu tiên dạng SoC (System on a Chip) được sử dụng trong các máy tính cá nhân cầm tay sử dụng hệ điều hành Windows CE.  R4000
  • 5. 4 Được đưa ra vào năm 1991, mở rộng tập lệnh MIPS để hỗ trợ đầy đủ kiến trúc 64 bit, chuyển FTU vào main để tạo ra một hệ thống chip đơn lẻ (Single-chip system), xử lý với tốc độ lên tới 100Mhz, tuy nhiên để đạt được tốc độ này bộ nhớ đệm phải bị giảm xuống còn 8kB và cần 3 chu kỳ để truy cập. Tần số xử lý cao đạt được nhờ việclưu trữ thông qua công nghệ đường ống sâu (deep pipelining – hay còn gọi là super-pipelining tại thời điểm đó). 1993 R4400 xuất hiện với 16kB cache, bộ xử lý 64 bit lớn và 1 bộ điều khiển cache mở rộng lên tới 1MB (cahe level 2). 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) 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 mở rộng tới 6 chip, hỗ trợ 4MB cache mở rộng.  R10000 (1995) Là một thiết kế chip đơn lẻ, chạy ở tốc độ cao hơn R8000, có 32kB cache chính cho các câu lệnh và dữ liệu. Các thiết kế tiếp theo của R1000 là R12000 và R14000 với hỗ trợ DDR SRAM trong cache và tốc độ lên tới 200 MHz. Ngoài ra còn các thiết kế R16000, R16000A, R6000. 1.3 Nguyên tắc thiết kế bộ 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)
  • 6. 5 − 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ị [1]: + R-chỉ thị thanh ghi: 2 toán hạng nguồn thanh ghi, 1 toán hạng đích thanh ghi. + I-chỉ thị trực tiếp: 1 toán hạng nguồn thanh ghi, 1 toán hạng nguồn trực tiếp, 1 toán hạng đích thanh ghi. + J-chỉ thị nhảy: 1 toán hạng nguồn trực tiếp. Hình 3.1 Ba định dạng chỉ thị lệnh 1.4 Một số lệnh sử dụng trong MIPS Sau đây là các lệnh được sử dụng trong MIPS 32 bits[2]:
  • 7. 6 Bảng 3.1 Lệnh của MIPS 32 bits 1.5 Phân loại MIPS 1.5.1. Thiết kế đơn xung nhịp Là thiết kế mà các pha thực hiện: nạp, giải mã and thực hiện, ghi của mỗi lệnh trong một chu kỳ đồng hồ [3]: Hình 3.2 Thiết kế đơn xung nhịp  Ư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ả – 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ồ. 1.5.2. Thiết kế đa xung nhịp Là thiết kế mà 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 [4].
  • 8. 7 Hình 3.3 Thiết kế đa xung nhịp  Ưu điểm: − 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.  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. 1.5.3. Thiết kế pipeline Khác với thiết kế đơn xung nhịp khi các lệnh đều được thực hiện xong trong một chu kì máy, thiết kế pipeline chia một câu lệnh ra thành 5 bước (steps) [5]:
  • 9. 8 Hình 3.4 Các bước thực hiện lệnh − 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ệnhR, 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: Hình 3.5 Chu trình thực hiện lệnh Dưới đây là sơ đồ kiến trúc MIPS khi thực hiện theo pipeline: Hình 3.6 Sơ đồ kiến trúc MIPS pipeline Các bước thực hiện một câu lệnh:
  • 10. 9  Đọ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): − 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.
  • 11. 10 1.6 Các ứng dụng của bộ xử lý MIPS Kiến trúc MIPS được sử dụng rộng rãi trong các ứng dụng công nghiệp như DVD player, Netwoking, camera số,…  DVD player (Pioneer DVR- 57H)  Networking 3COM – 3102 Business IP Phone 3COM – 3106 Cordless Phone
  • 12. 11 Canon EOS 450D Sony playstation PSX (CPU Type: LSI/MIPS R3000A, Architecture: 32 bit, Clockspeed 33,8 MHz) Sony Playstation Portable ( CPU 333MHz MIPS R4000) [2]
  • 13. 12 Phần 2. Phân tích và thực hiện kiểm chứng Phần này phân tích và phân chia các chức năng của sản phẩm từ đó lập ra kế hoạch thiết kế, phát triển sản phẩm. 2.1 Lựa chọn phương pháp kiểm chứng 2.1.1. Tầm quan trọng của kiểm chứng thiết kế Kiểm chứng vi mạch là quá trình tìm kiếm phát hiện lỗi trong thiết kế vi mạch. Lỗi trong thiết kế vi mạch là sự sai khác trong hoạt động của thiết kế với yêu cầu kỹ thuật đặt ra. Những lỗi này có thể xảy ra trong quá trình thiết kế, quá trình sản xuất vi mạch hoặc quá trình sử dụng vi mạch trong hệ thống. Dù là lỗi xảy ra trong quá trình nào thì chi phí để khắc phục cũng thường khá lớn do đó cần phát hiện sớm lỗi để tránh tốn nhiều thời gian, công sức và tiền bạn để sửa lỗi. 2.1.2. Các loại kiểm chứng trong quy trình thiết kế vi mạch Một số loại kiểm chứng thường dùng trong quy trình thiết kế vi mạch là kiểm chứng bằng hình vẽ, kiểm chứng dùng mô phỏng và kiểm chứng hình thức. Kiểm chứng mô phỏng Kiểm chứng hình thức Kiểm chứng dựa trên xung nhịp. Các giá trị đầu vào được đưa vào bản thiết kế hệ thống và cho phép máy tính thực hiện việc tính toán đầu ra Kiểm chứng dùng các công thức, mô hình toán học để mô hình hệ thống và chứng minh tính hoạt động đúng của mạch. Ưu điểm:  Trực quan với người sử dụng  Không quá khó để thiết lập hệ thống mô phỏng vi mạch Ưu điểm:  Khả năng tìm được lỗi cao hơn  Thời gian kiểm chứng có thể nhỏ hơn  Độ bao phủ lớn hơn Nhược điểm:  Độ bao phủ không cao  Tốn tài nguyên tính toán, mất nhiều thời gian để mô phỏng hết các trường hợp kiểm chứng cho vi mạch. Tối ưu mạch ảnh hưởng lớn đến tốc độ mô phỏng Nhược điểm:  Khó hình dung và thiết lập mô hình toán học cho mạch  Quy trình thiết lập mô hình toán học mất nhiều thời gian
  • 14. 13 Thông qua việc phân tích các phương pháp kiểm chứng, đồng thời dựa vào giới hạn thời gian hoàn thành đề tài cũng như mức độ phức tạp của kiến trúc MIPS, nhóm sẽ tiến hành thực hiện kiểm chứng bộ MIPS pipeline dùng phương pháp mô phỏng. 2.2 Mô hình kiểm chứng Nguyên tắc cơ bản của kiểm chứng là tạo sự dư thừa nên nhóm quyết định tạo một dạng triển khai khác của thiết kế, sau đó tiến hành so sánh hai dạng triển khai. Phương hướng triển khai:  Xây dựng mô hình thiết kế MIPS Pipeline ở mức RTL dùng ngôn ngữ Verilog và công cụ Quatus của Altera.  Xây dựng mô hình tính giá trị đúng của các phép toán dùng ngôn ngữ C/C++ và sử dụng visual express 2010.  Mô phỏng hai mô hình đồng thời và so sánh kết quả. 2.3 Thực hiện thiết kế MIPS Pipeline 2.3.1. Yêu cầu thiết kế  Yêu cầu chức năng  Bộ xử lý MIPS 32 bit có khả năng thực hiện các lệnh cơ bản như các phép toán số học (cộng, trừ, nhân …), truy cập bộ nhớ với hai chỉ thị (lw, sw), lưu trữ, đọc và ghi dữ liệu …  Thực hiện bằng ngôn ngữ mô tả phần cứng VerilogHDL.  Giải quyết được các xung đột cơ bản trong MIPS Pipeline.  Yêu cầu phi chức năng
  • 15. 14 Bộ xử lý MIPS sau khi được thiết kế không chỉ đạt những chức năng kĩ thuật mà cần đạt yêu cầu phi chức năng như sau:  Dễ sử dụng trong việc mô phỏng  Đáp ứng được các câu lệnh cơ bản  Dễ dàng nâng cấp và sửa lỗi khi cần thiết.  Giá thành hợp lý  MIPS hoạt động ổn định và có độ tin cậy cao  Năng lượng tiêu thụ thấp Tuy nhiên trong khuôn khổ của bài tập lớn này, chúng em chỉ dừng lại ở việc nghiên cứu và mô tả kiến trúc của bộ xử lý MIPS, không đặt vấn đề giá thành làm một tiêu chí đánh giá. 2.3.2. Sơ đồ thiết kế Các thông số đầu vào và đầu ra của thiết kế: Cổng Số bit Hướng Mô tả IReady 1 Input Tín hiệu báo bộ nhớ lệnh sẵn sàng gửi dữ liệu IData 32 Input Mã lệnh được lấy từ bộ nhớ lệnh DataIn 32 Input Dữ liệu được đọc ra từ bộ nhớ dữ liệu
  • 16. 15 DReady 1 Input Tín hiệu điều khiển việc đọc dữ liệu vào từ bộ nhớ dữ liệu IAddr 30 Output Địa chỉ lệnh trong bộ nhớ lệnh cần thực thi IRead 1 Output Tín hiệu điều khiển việc đọc địa chỉ chứa lệnh cần thực thi trong bộ nhớ lệnh DRead 1 Output Tín hiệu điều khiển việc đọc từ bộ nhớ dữ liệu DAddr 30 Output Địa chỉ trong bộ nhớ dữ liệu cần đọc/ghi dữ liệu DWrite 4 Output Tín hiệu điều khiển việc ghi vào bộ nhớ dữ liệu DataOut 32 Output Dữ liệu được ghi vào bộ nhớ dữ liệu 2.3.3. Thiết kế chi tiết từng khối Trong phần này nhóm sẽ tập trung trình bày một số khối quan trọng trong kiến trúc MIPS Pipeline 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 +) Tín hiệu ALUControl
  • 17. 16 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 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.
  • 18. 17 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ẽ: Ở đ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. 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
  • 19. 18 2.4 Thực hiện các phép toán trong MIPS dùng C++ Trong phần này nhóm sử dụng các phép toán có trong thư viện C để tính toán. Các phép toán (Instruction) được sử dụng là : cộng, trừ, nhân, chia được mã hóa tương ứng với các số từ 0 đến 3 và được sinh ngẫu nhiên trong file Instruction.txt, các toán hạng(Data) cũng được sinh ra ngẫu nhiên trong file data.txt. Các giá trị trong hai file này cũng là đầu vào cho quá trình mô phỏng mạch bằng techbench. Sau khi tính toán bằng các phép toán có trong thư viện C, kết quả đầu ra sẽ được ghi vào file output.txt. Hình bên dưới sẽ minh họa cho quá trình tính toán sử dụng thư viện C: Kết quả so sánh giá trị đầu ra của hai kiểu tính toán sẽ kiểm chứng độ chính xác của việc thiết kết mạnh (verilog). Từ đó ta có thể phát hiện các lỗi (nếu có) trong quá trình thiết kế.
  • 20. 19 Code C++: #include<iostream> #include<stdio.h> #include<conio.h> #include <cstdlib> #include<ctime> using namespace std; long add (long a, long b); long sub (long a, long b); long mul (long a, long b); long divi (long a, long b); int main() { int A[100],B[100],KQ[100]; long i,j ,a,b ; int test_case; srand(time(0)); //Lấy giá trị toán hạng ngẫu nhiên rồi đưa vào file Toanhang.txt freopen("instruction.txt","w",stdout); for (int n=1;n<=50;n++) { int x=rand()%4; cout<<x<<" "; } fclose(stdout); //Lấy hai toán tử ngẫu nhiên rồi đưa vào file đầu vào input.txt freopen("data.txt","w",stdout); for (int m=1;m<=50;m++) { //srand(time(0)); a = rand(); b = rand(); cout<<a<<" "<<b<<endl ; } fclose(stdout); //Cho toán hạng vào mảng A freopen("data.txt","r",stdin); for ( i=1;i<=50;i++) { cin>>A[i*2-1]>>A[i*2]; } fclose(stdin); //Cho toán tử vào mảg B freopen("instruction.txt","r",stdin); for ( j=1;j<=50;j++) cin>>B[j]; fclose(stdin); for (test_case=1;test_case<=50;test_case++){ switch (B[test_case]) {
  • 21. 20 case 0: { KQ[test_case]=add(A[test_case*2-1],A[test_case*2]); break; } case 1: { KQ[test_case]=sub(A[test_case*2-1],A[test_case*2]); break; } case 2:{ KQ[test_case]=mul(A[test_case*2-1],A[test_case*2]); break; } case 3:{ KQ[test_case]=divi(A[test_case*2-1],A[test_case*2]); break; } default: cout<< "ma lenh sai"; } } // ghi kết quả vào file đầu ra output.txt freopen("output.txt","w",stdout); for (int k=1;k<=50;k++) cout<<KQ[k]<<" "; fclose(stdout); } long add(long a,long b) { return a+b; } long sub (long a,long b) { return a-b; } long mul(long a,long b) { return a*b; } long divi ( long a, long b) { return a/b; }
  • 22. 21 Phần 3. Kết quả tổng hợp và mô phỏng Phần này trình bày về các phương án kỹ thuật được sử dụng để thiết kế sản phẩm. Có thể là lựa chọn các linh kiện phần cứng cho mạch. Có thể là lựa chọn thuật toán thực hiện một chức năng mạch. Có thể là lựa chọn kiến trúc mạch 3.1 Sơ đồ khối của sản phẩm Phần này làm rõ các khối thực hiện chức năng trong mạch, kết nối và giao tiếp giữa các khối. Phần này phải làm rõ được tín hiệu vào và ra khỏi từng khối. 3.2 Thuật toán, linh kiện, kiến trúc mạch Phần này làm rõ việc lựa chọn thuật toán hay linh kiện phần cứng hay kiến trúc mạch để thực hiện các khối chức năng Mỗi khối chức năng nên nêu ra ít nhất 2 phương án thực hiện và lựa chọn dựa trên các tiêu chí kỹ thuật định lượng.
  • 23. 22 Phần 4. Đánh giá kết quả và hướng phát triển Phần này mô tả việc thiết kế cụ thể từng khối chức năng. Nếu là mạch phần cứng thì trình bày sơ đồ nguyên lý, mô phỏng sơ đồ nguyên lý của mạch. Nếu là phần mềm thì trình bày lưu đồ thuật toán, cấu trúc dữ liệu, khai báo các hàm.
  • 24. 23 [1] http://en.wikipedia.org/wiki/MIPS_instruction_set, truy cập ngày 25/01/2015. [2] http://en.wikipedia.org/wiki/PlayStation_Portable, truy cập ngày 25/01/2015.