Reset tích cực mức thấp 3.3 Tập thanh ghi: Hình 3.3 Tập thanh ghi của CPU Các toán hạng của lệnh số học cần xuất phát từ một số giới hạn những vị trí đặc biệt được chứa trong tập thanh
Trang 1Đại Học Quốc Gia Tp.Hồ Chí Minh
TRƯỜNG ĐẠI HỌC BÁCH KHOA
-
TRƯƠNG VIỆT PHƯƠNG
THIẾT KẾ CPU RISC ĐA CHU KỲ
Trang 2Tp HCM, ngày 03 tháng 07 năm 2008
NHIỆM VỤ LUẬN VĂN THẠC SĨ
Họ và tên học viên: TRƯƠNG VIỆT PHƯƠNG Phái: Nam
Ngày, tháng, năm sinh: 23/05/1981 Nơi sinh: Quãng Ngãi Chuyên ngành: Kỹ thuật điện tử MSHV: 01406323 I- TÊN ĐỀ TÀI:
THIẾT KẾ CPU RISC ĐA CHU KỲ 32 BIT II- NHIỆM VỤ VÀ NỘI DUNG:
- Thiết kế bộ vi xử lý RISC đa chu kỳ 32 bit
- Cài đặt bộ vi xử lý RISC 32 bit trên FPGA
III- NGÀY GIAO NHIỆM VỤ: 21/01/2008
IV- NGÀY HOÀN THÀNH NHIỆM VỤ: 03/07/2008
Trang 3LỜI CẢM ƠN
Tôi trân trọng gửi đến Tiến sĩ Đinh Đức Anh Vũ và Thạc sĩ Tống Văn On lời cảm ơn chân thành và lòng biết ơn sâu sắc nhất vì những động viên và đóng góp ý kiến trong suốt thời gian qua
Xin chân thành cảm ơn các thầy cô trong khoa Điện-Điện Tử, đặc biệt là các thầy cô trong bộ môn Điện Tử và Viễn Thông, Trường Đại Học Bách Khoa TP.HCM
đã tận tình giảng dạy, hướng dẫn và giúp đỡ tôi trong quá trình học tập và hoàn thành luận văn này
Sau cùng tôi xin được bày tỏ tình cảm đến các bạn cùng khóa đã trao đổi nhiều tài liệu và giúp đỡ tôi trong suốt thời gian học
TP Hoà Chí Minh, tháng 07 năm 2008 TRƯƠNG VIỆT PHƯƠNG
Trang 4ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH Cán bộ hướng dẫn khoa học: Ths Tống Văn On
Cán bộ chấm nhận xét 1:
Cán bộ chấm nhận xét 2:
Luận văn thạc sĩ được bảo vệ tại HỘI ĐỒNG CHẤM BẢO VỆ LUẬN VĂN THẠC SĨ TRƯỜNG ĐẠI HỌC BÁCH KHOA,
Ngày 28 tháng 07 năm 2008
Trang 6In the age of today, together with the development of powerful information technology and telecommunications, technical innovation and upgrade is one of the most important factors that can’t be missed The normal processor can solve this problem but it can not ensure that fast processing speed and lower consumption The appearance of RISC processor not only responds demands of technical innovation and upgrade but also ensures processing speed and power consumption
In these recent years, RISC processor are applied widely for a lot of devices including cars, phone, digital cameras, printers,…Specially, they are the key for realization of portable electronic devices
In this thesis, I will present the design and implementation of 32 bit multicycle RISC on FPGA
Trang 7Tóm tắt
Abstract
Chương 0: Giới thiệu 1
0.1 Giới thiệu 1 0.2 Tổ chức luận văn 1
Chương 1: Giới thiệu về kiến trúc RISC 3
1.5 Các hệ thống phổ biến của RISC 7
Chương 2: Tập lệnh 8
2.1 Tóm tắt tập lệnh 8 2.2 Định dạng lệnh 9 2.3 Các chế độ định địa chỉ 10
Chương 4: Thiết kế đường dữ liệu 21
4.1 Tổng quan về đường dữ liệu 21
4.2 Đường dữ liệu đơn chu kỳ 21
4.2.1 Đường dữ liệu cho quá trình tìm nạp lệnh 21
4.2.2 Đường dữ liệu cho quá trình giải mã 22
4.2.3 Đường dữ liệu cho quá trình thực thi lệnh dạng R 23
4.2.4 Đường dữ liệu cho quá trình thực thi lệnh load và store 24
4.2.5 Đường dữ liệu cho quá trình thực thi lệnh nhảy 24
Trang 84.2.8 Đường dữ liệu đơn chu kỳ hoàn chỉnh 28
4.3 Đơn vị điều khiển 28
4.4 Ưu và khuyết điểm của đơn chu kỳ 31
4.5 Đường dữ liệu đa chu kỳ 31
4.5.1 Tổng quan về thực hiện đa chu kỳ 31
4.5.2 Xây dựng đường dữ liệu đa chu kỳ 34
4.5.3 Xây dựng các giá trị tín hiệu điều khiển cho mỗi lệnh 40
Chương 5: Điều khiển đa chu kỳ 45
5.1 Điều khiển đa chu kỳ 45 5.2 Máy trạng thái của đường dữ liệu đa chu kỳ 46
5.2.1 Điều khiển FSM cho quá trình nhận và giải mã lệnh 47
5.2.2 Điều khiển FSM cho quá trình tham chiếu bộ nhớ 47
5.2.3 Điều khiển FSM cho dạng lệnh R 48
5.2.4 Điều khiển FSM cho dạng lệnh rẽ nhánh 48
5.2.5 Điều khiển FSM cho lệnh nhảy 48
5.3 Bảng giá trị các tín hiệu điều khiển 49
Chương 6: Kết luận và hướng phát triển đề tài 50
Trang 9IBM 801, Stanford MIPS và Berkeley 1 và 2, tất cả được thiết kế với mô hình tương tự nhau và được biết như RISC ngày nay
Hiện nay thiết kế và chế tạo vi mạch là một lĩnh vực đang phát triển nhanh
chóng Có rất nhiều công ty đang nghiên cứu và phát triển trên lĩnh vực này Đây là
một lĩnh vực thuộc công nghệ cao và sẽ là lĩnh vực mũi nhọn trong tương lai, trong khi
đó nước ta chưa có gì, vì vậy vấn đề đặt ra là cần phải đào tạo nguồn nhân lực về lĩnh
vực thiết kế vi mạch
0.2 Tổ chức của luận văn:
Chương 0: giới thiệu
Chương1: giới thiệu về kiến trúc RISC
Chương 2:tập lệnh
Chương 3: tổ chức của bộ vi xử lý
Chương 4:thiết kế đường dữ liệu
Chương 5:điều khiển đa chu kỳ
Chương 6: kết luận và hướng phát triển đề tài
Phụ lục 1: mã verilog của thiết kế CPU
Phụ lục 2: các kết quả mô phỏng
Trang 100.3 Các công việc có liên quan:
Mục tiêu chính của luận văn là tìm hiểu nguyên tắc hoạt động, xây dựng tập
lệnh và thiêt kế cấu trúc của bộ vi xử lý RISC đa chu kỳ
Ngoài ra để thiết kế trên FPGA, tác giả phải hiểu rõ về FPGA và ngôn ngữ mô
tả phần cứng Verilog để lập trình cho thiết bị Công cụ chính để thực hiện đề tài là :
¾ Phần mềm ISE version 8.2i của Xilinx
¾ Phần cứng board Spartan III
Trang 11dụng Vì thế họ mới đề xuất ra một máy tính có số lệnh ít hơn và cấu trúc đơn giản
hơn Kiểu máy tính như thế người ta gọi là máy tính có tập lệnh rút gọn hay còn gọi là RISC ( Reduced Instruction Set Computer )
Đặc điểm đầu tiên của RISC là mỗi lệnh được thực hiện trong một chu kỳ Nạp lệnh trong một chu kỳ có thể thực hiện được bằng cách giữ cho các lệnh ở một kích
thước chuẩn Kích thước lệnh chuẩn bằng với số đường dữ liệu trong bus hệ thống Ở mỗi chu kỳ nạp lệnh , một lệnh đơn hoàn chỉnh sẽ được chuyển đến CPU Ví dụ kích
thước word cơ bản là 32 bit và port dữ liệu của bus hệ thống là 32 đường thì chiều dài lệnh chuẩn là 32 bit
Một số lệnh có liên quan đến các phép toán logic trên thanh ghi thì có thể được thực hiện trong một chu kỳ mà không có vấn đề gì Những lệnh liên quan đến quá
trình truy xuất bộ nhớ thì không thể thực hiện trong một chu kỳ đơn
Tóm lại thì những lệnh nào được chọn vào trong danh sách tập lệnh rút gọn ?
Câu trả lời chính xác đó là các lệnh hay sử dụng nhất, trong số các lệnh đó tập trung
chủ yếu là các lệnh di chuyển dữ liệu, lệnh liên quan đến các phép toán logic và các
lênh liên quan đến các phép toán số học
Để thuận tiện cho các phép toán xảy ra trên các toán hạng thanh ghi thì tập các
thanh ghi phải đủ lớn Với tập thanh ghi đủ lớn thì cho phép lưu trữ tạm thời các kết
quả trung gian của những phép toán mà không cần sử dụng bộ nhớ Điều này sẽ làm
giảm đi bớt các hoạt động truy xuất bộ nhớ tương ứng với việc giảm đi bớt các lệnh
lấy và lưu dữ liệu vào trong bộ nhớ Với RISC 32 bit thì tập thanh ghi tối thiểu là 32
thanh ghi
Trang 121.2 Ý tưởng thiết kế RISC:
Ý tưởng bắt đầu khi người ta nhận thấy rất nhiều tính năng trong các bộ vi xử lý vốn được thiết kế nhằm giúp công việc lập trình trở nên dễ dàng hơn lại thường bị các phần mềm bỏ sót Những tính năng này thông thường cần vài chu kỳ máy để thực thi
Cộng thêm sự cách biệt về hiệu suất giữa các CPU và bộ nhớ chính đã dẫn đến nhiều
kỹ thuật nhằm tổ chức lại quá trình thực thi trong bộ xử lý và làm giảm bớt số lần truy xuất bộ nhớ
Những năm cuối của thập niên 1970, các nhà nghiên cứu của IBM đã chứng
minh rằng phần lớn các phương pháp đánh địa chỉ trực giao thường bị các chương
trình bỏ qua Đây chính là kết quả không mong đợi do sử dụng các trình biên dịch cấp cao thay vì sử dụng hợp ngữ Các trình dịch tại thời điểm đó không đủ khả năng để
tận dụng hết tính năng của các bộ vi xử lý CISC, chủ yếu là do sự khó khăn trong thiết
kế trình dịch Trình biên dịch càng trở nên phổ biến thì các tính năng này lại càng bị
bỏ quên
Cũng trong thời gian này, CPU bắt đầu hoạt động nhanh hơn bộ nhớ Thậm chí trong thập niên 1970, người ta cho rằng điều này sẽ còn tiếp tục không dưới một thập
niên nữa , và đến lúc đó CPU sẽ nhanh hơn bộ nhớ từ hàng chục đến hàng trăm lần Có
lẽ đã đến lúc CPU cần thêm nhiều thanh ghi để có thể hoạt động ở tốc độ cao Những
thanh ghi và bộ nhớ đệm mới sẽ cần khoảng trống trên bo mạch hoặc trên chip được
tạo ra nếu giảm sự phức tạp của CPU
Đến lúc này , một phần đóng góp cho kiến trúc RISC đến từ thực tế đo đạc
những chương trình trong thế giới thực Andrew Tanenbaum từ tổng kết rất nhiều đo
đạc này đã chỉ ra rằng hầu hết những CPU lúc bấy giờ đều được thiết kế quá thừa Ví
dụ , ông cho rằng 98% các hằng hoàn toàn có thể biểu diễn bằng 13 bit, trong khi đó
các CPU đều được thiết kế theo bội số của 8 thường là 8, 16, 32 Do đó nếu CPU cho
phép các hằng được lưu trong những bit dư của mã lệnh sẽ làm giảm đi rất nhiều lần
truy xuất bộ nhớ Thay vì phải đọc từ bộ nhớ hay từ thanh ghi, các hằng đã ở ngay đó
khi CPU cần, vì thế quá trình thực thi sẽ nhanh hơn Tất nhiên điều này yêu cầu mã
lệnh phải thật nhỏ để những lệnh 32 bit có thể chứa được những hằng tương đối lớn
Những chương trình trong thực tế thường tốn phần lớn thời gian để thực hiện
một số tác vụ đơn giản, do đó một số nhà nghiên cứu hướng đến việc tối ưu hóa
Trang 13những tác vụ này Do xung nhịp của CPU bị giới hạn bởi thời gian thực hiện lệnh
chậm nhất, nên nếu tối ưu lệnh này sẽ khiến cho toàn bộ tập lệnh được thực thi nhanh
hơn nhiều Mục tiêu của RISC chính là đơn giản hóa các lệnh, để mỗi lệnh có thể được thực thi trong một chu kỳ máy Việc tập trung đơn giản hóa các lệnh đã cho ra đời các loại máy “ máy tính có tập lệnh được đơn giản hóa” hay còn gọi là RISC
1.3 Các đặc điểm của RISC:
¾ Mỗi lệnh chỉ thực hiện trong một chu kỳ
¾ Định dạng lệnh đơn giản, dễ giải mã và kích thước lệnh phải cố định
¾ Ít lệnh
¾ Ít chế độ định địa chỉ
¾ Truy xuất bộ nhớ bị giới hạn, chỉ có lệnh load và store
¾ Tất cả các phép toán được thực hiện bên trong thanh ghi
¾ Tập thanh ghi phải nhiều
Với bộ vi xử lý RISC thì nó cũng có những hoạt động như bộ vi điều khiển
nhưng nó không có nhiều lệnh, vì tốc độ xử lý của nó nhanh hơn, đồng thời có thể dễ
dàng nâng cấp và cải tiến kỹ thuật khi có nhu cầu cần thiết
Ngày nay bộ vi xử lý RISC được sử dụng rộng rãi trong nhiều ứng dụng như
trong xe ô tô, máy điện thoại, máy ảnh số , máy in, và cũng như trong nhiều thiết bị
khác Lý do của việc sử dụng rộng rãi các bộ vi xử lý RISC là công suất của nó thấp và kích thước của nó nhỏ, do đó nó không chiếm nhiều diện tích và cũng như chi phí cho việc chế tạo
1.4 Cải tiến RISC:
Trong khi những khái niệm về RISC đang dần được hoàn thiện thì những ý
tưởng nhằm cải tiến hiệu suất cho các CPU cũng bắt đầu ra đời
Ý tưởng đầu tiên có lẽ là kỹ thuật đường ống (pipeline): Đây là một kỹ thuật
nhằm chia nhỏ quá trình thực thi một lệnh thành nhiều bước, và các bước khác nhau
của các lệnh khác nhau có thể đồng thời được thực thi Một bộ xử lý thông thường đọc một lệnh, giãi mã , đọc những vùng nhớ lệnh nó cần, thực thi lệnh, trả kết quả trở về
Trang 14Với kỹ thuật đường ống, bộ xử lý có thể đọc một lệnh ngay sau khi nó đọc xong lệnh
trước đó, tức nó vừa giải mã một lệnh vừa đọc một lệnh kế tiếp, tới chu kỳ tiếp theo bộ
xử lý sẽ làm việc với ba lệnh cùng một lúc, và cứ thế tiếp tục Dù thực tế không có
lệnh nào được thực thi nhanh hơn, nhưng do lệnh theo sau sẽ hoàn thành ngay sau khi lệnh trước hoàn tất nên đây là một giải pháp rất hiệu quả nhằm tận dụng tối đa tài
nguyên của các vi xử lý
Một phương án khác là dùng nhiều đơn vị xử lý song song trong cùng một bộ
xử lý Thay vì thực thi một lệnh bộ xử lý sẽ tìm cách thực thi đồng thời lệnh kế tiếp
trong một đơn vị xử lý khác Tuy nhiên đây là một phương án khó vì nhiều lệnh đôi
khi lại phụ thuộc vào kết quả của lệnh trước nó
Cả hai phương pháp trên hướng tới việc cải tiến bằng cách tăng độ phức tạp của CPU Vì không gian trên chip là có giới hạn do đó để thêm những tính năng mới này
người ta cần bỏ đi những tính năng khác Vì thế RISC là kẻ được hưởng lợi trước tiên
do về cấu trúc nó đơn giản hơn CISC nhiều Những thiết kế RISC đầu tiên nhanh
chóng được thêm những tính năng mới giúp chúng vượt qua những chip CISC tương
ứng
Dù ở bất kỳ cấp độ nào , đơn vị logic của một chip RISC bao giờ cũng cần ít
transitor hơn so với một chip CISC Điều này giúp người thiết kế có rất nhiều sự linh
hoạt như:
¾ Tăng số lượng thanh ghi
¾ Sử dụng các phương pháp tối ưu để tăng mức độ xử lý song song bên trong CPU
¾ Tăng kích thước cable
¾ Thêm các tính năng như I/O, timer…
¾ Tận dụng các dây chuyền công nghệ cũ , trong khi các chip CISC điều này rất
khó khăn
Ngày nay , một số kiến trúc RISC được xây dựng dựa trên kiến trúc Harvard,
trong đó bus dữ liệu và bus chương trình tách rời nhau Điều này giúp cho quá trình
đọc dữ liệu và giải mã lệnh có thể xảy ra đồng thời do đó có khả năng nâng cao hiệu
suất của vi xử lý
Trang 151.5 Các hệ thống và các RISC phổ biến:
Họ MIPS, trong các máy tinh SGI, Playstation và Nintendo 64 game consoles
Họ POWER trong các SuperComputer/mainframe của IBM
Freescale và IBM’s PowerPC trong Nintendo Gamecube, Microsoft Xbox 360,
Nintendo Wii and Sony Playstation 3 game consoles, và cho tới gần đây là Apple Macintosh
SPARC và UltraSPARC trong tất cả các hệ thống của Sun
Trang 16CHƯƠNG 2
TẬP LỆNH
2.1 Tóm tắt tập lệnh:
Hoạt động của CPU được xác định bởi tập lệnh mà nó thực thi Tập hợp các
lệnh khác nhau để CPU có thể thực thi được gọi là tập lệnh của CPU Từ tập lệnh ta
mới có thể xác định đường dữ liệu và mọi thứ khác trong vi xử lý
Bảng tóm tắt các lệnh cơ bản của RISC như sau:
Mả gợi nhớ Khuôn dạng Trường Opcode Trường chức
Trang 172.2 Định dạng lệnh:
Tập lệnh của RISC có chiều dài cố định 32-bit và 32 thanh ghi đa năng 32 bit
Thanh ghi 0 luôn chứa giá trị 0 Một từ nhớ rộng 32-bit
RISC có ba khuôn dạng lệnh (instruction format) Chỉ có các khuôn dạng I như LOAD và STORE mới tham chiếu các toán hạng bộ nhớ Các lệnh khuôn dạng R, như ADD, AND hoặc OR chỉ thực hiện các thao tác trên dữ liệu trong các thanh ghi
Chúng yêu cầu hai toán hạng thanh ghi Rs và Rt Kết quả của thao tác được lưu trong
thanh ghi thứ ba Rd Các trường chức năng (function) và dịch (shift) của khuôn dạng R được sử dụng làm trường opcode (mã thao tác) mở rộng Các lệnh khuôn dạng J bao
Funct : mã chức năng tương ứng với mã lệnh đó
Rs : địa chỉ thanh ghi nguồn thứ nhất
Rt : địa chỉ thanh ghi nguồn thứ hai
Rd : địa chỉ thanh ghi đích
Shamt : dùng cho các lệnh dịch bit, các lệnh khác có shamt=0
6 bits 5 bits 5 bits 5 bits 5 bits 6 bits
sham
Trang 182.2.2 Các lệnh chuyển dữ liệu (định dạng I):
Với:
Op : mã lệnh
Rs : địa chỉ thanh ghi nguồn thứ nhất
Rt : địa chỉ thanh ghi nguồn thứ hai
Offset : giá tri 16 bit
Trang 19 Định địa chỉ nền: operand ở vị trí nhớ có địa chỉ là tổng của thanh ghi và hằng 16 bit chứa trong lệnh
Định địa chỉ trực tiếp (hay tức thời): operand là hằng 16 bit chứa trong lệnh
Định địa chỉ tương đối PC: địa chỉ của lệnh là tổng của PC và hằng 16 bit chứa
trong lệnh
Định địa chỉ giả trực tiếp: địa chỉ của lệnh là hằng 26 bit chứa trong lệnh nối với
4 bit cao của PC
Trang 202.4 Tập lệnh chi tiết:
Lệnh add:
Cú pháp: add rd , rs , rt
Chức năng: cộng giá trị trong thanh ghi rs với giá trị trong thanh ghi rt và đặt kết quả
vào trong thanh ghi rd
Lệnh sub:
Cú pháp : sub rd , rs , rt
Chức năng : trừ giá trị trong thanh ghi rs với giá trị trong thanh ghi rt và đặt kết quả
vào trong thanh ghi rd
Lệnh and:
Cú pháp: and rd , rs , rt
Chức năng: and giá trị trong thanh ghi rs với giá trị trong thanh ghi rt và đặt kết quả
vào trong thanh ghi rd
Lệnh or:
Cú pháp: or rd , rs , rt
Chức năng: or giá trị trong thanh ghi rs với giá trị trong thanh ghi rt và đặt kết quả vào
trong thanh ghi rd
Trang 21Lệnh sll:
Cú pháp: sll rd , rt , shamt
Chức năng: dịch trái thanh ghi rt đi một khoảng là shamt bit và đặt kết quả vào trong
thanh ghi rd , và điền các bit bị dịch đi là bit 0
Lệnh srl
Cú pháp: srl rd , rt , shamt
Chức năng: dịch phải thanh ghi rt đi một khoảng là shamt bit và đặt kết quả vào thanh
ghi rd, điền các bit bị dịch đi là bit 0
Lệnh slt:
Cú pháp : slt rd , rs , rt
Chức năng: so sánh giá trị trong thanh ghi rs và giá trị trong thanh ghi rt, nếu giá trị
trong thanh ghi rs nhỏ hơn trong rt thì đặt giá trị 1 vào rd và ngược lại thì đặt giá trị 0
Trang 22Cú pháp: addi rd , rs , imm
Chức năng: cộng giá trị trong thanh ghi nguồn với giá trị trực tiếp imm 16 bit từ mã
lệnh, giá trị trực tiếp này được qua khối mở rộng bit dấu thành dữ liệu 32 bit rồi mới
thực hiện phép cộng, kết quả đặt vào trong thanh ghi rd
Chức năng: nhảy đi một khoảng là offset word tính từ địa chỉ hiện thời của lệnh beq
nếu giá trị trong thanh ghi nguồn rs= bằng giá trị trong thanh ghi đích rt, offset có âm
hoặc dương Giá tri địa chỉ nhảy đến được tính bởi PC+4+offset*4
Trang 23Lệnh bne:
Cú pháp: bne rs , rt , offset
Chức năng: nhảy đi một khoảng là offset word tính từ địa chỉ hiện thời của lệnh bne
nếu giá trị trong thanh ghi nguồn rs khác giá trị trong thanh ghi đích rt, offset có thể
âm hoặc dương Giá trị địa chỉ nhảy đến được tính bởi PC+4+offset*4
Trang 24CHƯƠNG 3
TỔ CHỨC CỦA BỘ VI XỬ LÝ
3.1 Tổng quan về kiến trúc bộ vi xử lý RISC:
Control Unit
control bus signals
address bus data bus
Hình 3.1 Tổng quan về kiến trúc bộ vi xử lý
Hình 3.1 trình bày sơ đồ khối của bộ vi xử lý RISC Có ba modules trong khối
này gồm:
¾ Module control unit (mođun đơn vị điều khiển ): điều khiển gửi (nhận) tín hiệu
điều khiển (dữ liệu) trong liên kết với dãi thanh ghi
¾ Module ALU : thực hiện I/O trên dữ liệu chứa trong dải thanh ghi
¾ Module register
Sơ đồ khối chi tiết của bộ xử lý :
Trang 25¾ CPU : là thành phần tích cực của máy tính , nó làm tất cả công việc như thao tác
dữ liệu và ra quyết định
¾ Đường dữ liệu : là phần cứng để thực thi tất cả những thao tác yêu cầu, ví dụ như
là ALU , dải thanh ghi và bus nội
¾ Đơn vị điều khiển : là phần cứng để thông báo với đường dữ liệu cần phải làm
cái gì như chuyển chu kỳ , di chuyển dữ liệu giữa ALU và các thành phần
khác,…
3.2 Sơ đồ chân:
Hình 3.2 Cấu hình chân của CPU
Trang 26Hình 3.2 trình bày cấu hình chân của CPU CPU có hai chân vào (clock và reset ) , hai chân ra điều khiển đọc ghi bộ nhớ (mem read và mem write ) và 3 port gồm hai port ngõ ra (write data và write/read data ) và một port ngõ vào (read data ) mỗi port
có 32 chân dùng để truy xuất bộ nhớ Tín hiệu clock sẽ điều khiển toàn bộ CPU Reset tích cực mức thấp
3.3 Tập thanh ghi:
Hình 3.3 Tập thanh ghi của CPU
Các toán hạng của lệnh số học cần xuất phát từ một số giới hạn những vị trí đặc
biệt được chứa trong tập thanh ghi của đường dữ liệu Các thanh ghi sẽ:
¾ Nhanh
¾ Dễ dàng được sử dụng bởi trình biên dịch
¾ Cải thiện được mật độ mã
Tập thanh ghi (register file) là thiết bị phần cứng có 2 port đọc và một port ghi
Các toán hạng của lệnh số học cần xuất phát từ một số giới hạn những vị trí đặc
biệt được chứa trong tập thanh ghi của đường dữ liệu Tập thanh ghi bao gồm 32 thanh ghi 32 bit có thể được đọc hay ghi bằng cách cung cấp một con số thanh
ghi để truy xuất
Địa chỉ của thanh ghi được chỉ ra bằng $
Trang 27Danh sách tên và cách sử dụng tập thanh ghi:
$v0-$v1 2-3 values for results and expression evaluation
$k0-$k1 26-27 reserved for Operating System kernel
Trang 28Các toán hạng của lệnh số học phải ở trong những thanh ghi Nhưng bộ vi xử lý chỉ có
32 thanh ghi được cung cấp , do đó đối với các chương trình nhiều biến thì các biến đó phải được lưu trong bộ nhớ Vì vậy, phải có khả năng di chuyển các biến đến/từ bộ
nhớ và tập thanh ghi một cách dễ dàng
¾ Bộ nhớ là dải một chiều , lớn
¾ Địa chỉ đóng vai trò chỉ số bên trong bộ nhớ
¾ Địa chỉ byte được định địa chỉ theo kiểu big Endian trong khi các bit được định
địa chỉ theo kiểu little Endian
Trang 29CHƯƠNG 4
THIẾT KẾ ĐƯỜNG DỮ LIỆU
4.1 Tổng quan về đường dữ liệu :
Đường dữ liệu là một phần “cơ bắp” của vi xử lý , nó thi hành chu kỳ tìm nạp – giải mã – thực thi Nguyên tắc chung cho thiết kế đường dữ liệu là:
¾ Phân tích tập lệnh
¾ Chọn các thành phần đường dữ liệu và thiết lập các phương pháp tạo clock
¾ Ghép nối các đường dữ liệu theo yêu cầu
¾ Xác định các giá trị tín hiệu điều khiển cho mỗi lệnh
¾ Ghép nối các mạch logic điều khiển để tạo ra các tín hiệu điều khiển
Những thành phần của đường dữ liệu đơn giản gồm có:
¾ Bộ nhớ (lưu trữ lệnh hiện tại)
¾ PC hay bộ đếm chương trình (lưu trữ địa chỉ của lệnh hiện tại)
¾ ALU thực thi lệnh hiện tại
4.2 Đường dữ liệu đơn chu kỳ :
Kiến trúc RISC gồm có 5 module chính:
¾ Module tìm nạp lệnh (IFETCH): chứa bộ nhớ chương trình ,bộ đếm chương trình
PC và phần cứng tăng bộ đếm chương trình để tính địa chỉ của lệnh kế
¾ Module giải mã (IDECODE): chứa các thanh ghi 32 bit
¾ Module thực thi (EXECUTE): chứa địa chỉ và dữ liệu rẽ nhánh của ALU, và
mạch cộng địa chỉ rẽ nhánh dùng cho các lệnh rẽ nhánh tương đối theo PC
¾ Module bộ nhớ (DMEMORY): chứa bộ nhớ dữ liệu
4.2.1 Đường dữ liệu cho quá trình tìm nạp lệnh:
Trang 30Quá trình tìm nạp lệnh :
¾ Đọc lệnh từ bộ nhớ lệnh: bộ nhớ lệnh chứa các lệnh mà bộ vi xử lý sẽ thực hiện
Ngõ vào của bộ nhớ lệnh là địa chỉ 32 bit từ bộ đếm chương trình, ngõ ra các
lệnh với độ dài là 32 bit
¾ Cập nhật giá trị của PC bằng địa chỉ của lệnh kế tiếp :PC chứa địa chỉ của lệnh sẽ
được nạp từ bộ nhớ lệnh trong thời gian của chu kỳ kế tiếp PC sẽ tăng lên 4
trong mỗi chu kỳ xung clock
4.2.2 Đường dữ liệu cho quá trình giải mã lệnh:
Quá trình giải mã lệnh:
¾ Truyền opcode của lệnh đã tìm nạp và các bit của trường chức năng(funct) đến
đơn vị điều khiển
¾ Đọc hai giá trị từ tập thanh ghi , các địa chỉ của tập thanh ghi được chứa trong
lệnh
¾ Cả hai thanh port đọc của tập thanh ghi đều tích cực đối với tất cả lệnh trong thời
gian giải mã sử dụng các địa chỉ của trường rs và rt của lệnh
Trang 314.2.3 Đường dữ liệu cho quá trình thực thi dạng lệnh R:
Các lệnh dạng R (add, sub, slt, and, or):
¾ Thực hiện thao tác (op và funct) trên các giá trị trong rs và rt
¾ Lưu kết quả trở lại tập thanh ghi trong vị trí rd
¾ Tập thanh ghi không được ghi mỗi chu kỳ do đó ta cần tín hiệu điều khiển ghi
cho tập thanh ghi
Trang 324.2.4 Đường dữ liệu cho quá trình thực thi lệnh load và store:
Các lệnh load/store cần phải:
¾ Tính địa chỉ bộ nhớ bằng cách cộng thanh ghi nền (trong rs) với trường offset 16
bit có dấu trong lệnh
¾ Thanh ghi nền được đọc từ tập thanh ghi trong thời gian giải mã
¾ Giá trị offset trong 16 bit thấp của lệnh phải được mở rộng dấu để tạo ra giá trị
32 bit có dấu
¾ Load : giá trị đọc từ tập thanh ghi trong thời gian giải mã phải được ghi đến bộ
nhớ dữ liệu
¾ Store: giá trị đọc từ bộ nhớ dữ liệu phải được lưu trong tập thanh ghi
4.2.5 Đường dữ liệu cho quá trình thực thi lệnh nhảy:
RD
Instructio n Memory
Zero
RD WD
Trang 33Quá trình thực thi các lệnh nhảy: thay thế 28 bit thấp của PC bằng 26 bit thấp
của lệnh đã tìm nạp được dịch trái 2 bit
4.2.6 Đường dữ liệu cho quá trình thực thi lệnh rẽ nhánh:
Các lệnh rẽ nhánh cần phải:
¾ So sánh “bằng” các toán hạng đọc từ tập thanh ghi trong thời gian giải mã( các
giá trị trong rs và rt)
¾ Tính địa chỉ đích rẽ nhánh bằng cách cộng PC đã cập nhật với trường offset 16
bit có dấu được mở rộng dấu trong lệnh
¾ Thanh ghi nền là PC đã được cập nhật
¾ Giá trị offset trong 16 bit thấp của lệnh phải được mở rộng dấu để tạo ra giá trị
32 bit có dấu và kế đến được dịch trái 2 bit để trở thành địa chỉ từ
4.2.7 Tạo đường dẫn dữ liệu từ các thành phần:
¾ Lắp ghép các thành phần đường dữ liệu , thêm vào các đường điều khiển cần
thiết và thiết kế đơn vị điều khiển
¾ Tìm nạp , giải mã , và thực thi từng lệnh trong một chu kỳ clock
¾ Thời gian chu kỳ được xác định bởi chiều dài của lệnh dài nhất
Trang 34 Tổng hợp đường dữ liệu của dạng lệnh R và load/store:
Tổng hợp đường dữ liệu lệnh R, lệnh load/store và lệnh rẽ nhánh:
5 5 16
MemRead
Data Memory
5
ADDR
MemWrite
M U X
Operation
ALU
3
E X T N
Zero
RD WD
MemRead
Data Memory ADDR MemWrite
5
Instruction
32
M U
ALUSrc
MemtoReg
ADD
<<2 RD
Instruction Memory
ADDR PC
Trang 35 Hoàn thành đường dữ liệu:
Operation
ALU
3
E X T N
Zero
RD WD
MemRead
Data Memory ADDR MemWrite
5
Instruction I
32
M U
ALUSrc
MemtoReg
ADD
<<2 RD
Instruction Memory
ADDR PC
4
AD
AD M U
M U
RegWrite Register
Operati on
ALU
3
E X T N D
Zero
RD WD
MemRead
Data Memory
M U
1 1
0
Trang 364.2.8 Đường dữ liệu đơn chu kỳ hoàn chỉnh:
4.3 Đơn vị điều khiển:
4.3.1 Điều khiển ALU:
Thao tác của ALU dựa trên loại lệnh và mã chức năng:
Việc điều khiển ALU sử dụng nhiều mức giải mã :
¾ Đơn vị điều khiển chính tạo ra tạo ra các bit ALUOp
¾ Đơn vị điều khiển ALU tạo ra các bit ALUcontrol
RegWrite Register
Operati on
ALU
3
E X T N D
16 32
Zer
RD WD
MemRead
Data Memory
M X U
0
1 0
ALU Control Control
0 1
Trang 37PC+4[31-Bảng giá trị 6 ngõ vào:
4.3.2 Đơn vị điều khiển chính:
Đơn vị điều khiển chính với ngõ vào 6 bit opcode từ 32 bit của một chỉ thị lệnh ,
tạo ra 8 tín hiệu điều khiển để điều khiển các tầng khác nhau của bộ vi xử lý Đơn vị
này điều khiển tất cả hoạt động của bộ vi xử lý Module này tạo ra tất cả các tín hiệu
để điều khiển hoạt động đọc ghi của tập thanh ghi và bộ nhớ dữ liệu , tín hiệu điều
khiển đơn vị quyết định rẽ nhánh
Operation Desired Action
and
or set on less than
X 0 0 1 1 0