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

Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC

69 31 0

Đ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 69
Dung lượng 698,22 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp

Trang 1

THIẾT KẾ LÕI MỀM CHO BỘ XỬ LÝ

THEO KIẾN TRÚC RISC

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Trang 2

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

LƯU THỊ THẢO

THIẾT KẾ LÕI MỀM CHO BỘ XỬ LÝ

THEO KIẾN TRÚC RISC

LUẬN VĂN THẠC SĨ CÔNG NGHỆ THÔNG TIN

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan đây là công trình nghiên cứu của tôi dưới sự hướng dẫn của TS Nguyễn Kim Khánh

Các số liệu, kết quả nêu trong luận văn là trung thực và mọi trích dẫn trong báo cáo đều được ghi rõ nguồn gốc trong phần tài liệu tham khảo Nếu có sử dụng bất hợp pháp kết quả công trình nghiên cứu của người khác trong báo cáo tôi xin hoàn toàn chịu trách nhiệm

Tác giả

Lưu Thị Thảo

Trang 4

LỜI CẢM ƠN

Lời đầu tiên tôi muốn bày tỏ lòng biết ơn sâu sắc và kính trọng của mình tới thầy giáo, TS Nguyễn Kim Khánh Trong quá trình tìm hiểu, nghiên cứu để hoàn thành luận văn, tôi gặp không ít khó khăn, nhưng những lúc như vậy, tôi luôn nhận được sự động viên, khích lệ của thầy Thầy đã giúp đỡ tôi rất nhiều trong quá trình nghiên cứu, hướng dẫn tận tình trong cách thức và phương pháp nghiên cứu khoa học cũng như hỗ trợ tôi trong việc tìm tài liệu

Để có được những kết quả trong luận văn này, tôi xin gửi lời cảm ơn sâu sắc đến Thầy, Cô Viện Công nghệ thông tin và Truyền thông, Trường Đại học Bách khoa Hà Nội đã tạo điều kiện cho tôi được học hỏi thông qua các môn học cũng như hoàn thành khóa học

Cuối cùng tôi xin bày tỏ lòng cảm ơn chân thành đến gia đình, người thân và bạn bè đồng nghiệp đã khích lệ và động viên tôi hoàn thành luận văn này.!

Tác giả

Trang 5

MỤC LỤC

LỜI CAM ĐOAN 1

LỜI CẢM ƠN 2

MỤC LỤC 3

DANH MỤC THUẬT NGỮ 6

DANH MỤC BẢNG 7

DANH MỤC HÌNH 8

MỞ ĐẦU 10

1 Lý do chọn đề tài 10

2 Mục đích nghiên cứu 11

3 Đối tượng – Phạm vi nghiên cứu 11

4 Bố cục luận văn 11

5 Phương pháp nghiên cứu 12

CHƯƠNG 1: GIỚI THIỆU VỀ LÕI MỀM CỦA BỘ VI XỬ LÝ VÀ ĐỊNH HƯỚNG THỰC HIỆN CỦA LUẬN VĂN 13

1.1 Nhiệm vụ của đề tài 13

1.2 Định hướng giải quyết vấn đề 13

1.3 Cơ sở lý thuyết 14

1.3.1 Khái niệm chung về lõi mềm 14

1.3.2 Kiến trúc RISC 14

1.3.3 Sơ đồ khối của thiết kế RISC 27

1.4 Nội dung thực hiện và công cụ sử dụng 29

1.5 Kết chương 29

Trang 6

CHƯƠNG 2: THIẾT KẾ CPU 8 BIT DỰA TRÊN KIẾN TRÚC RISC 30

2.1 Nhiệm vụ 30

2.2 Tổ chức bộ nhớ của CPU 30

2.3 Tập lệnh của CPU 31

2.3.1 Thiết kế tập lệnh 31

2.3.2 Định nghĩa tập lệnh 32

2.3.3 Tập lệnh của bộ xử lý RISC 8 bit 38

2.4 Chế độ địa chỉ của lệnh 41

2.4.1 Các lệnh địa chỉ đầy đủ 41

2.4.2 Các lệnh địa chỉ gián tiếp trong CPU 42

2.5 Tổng thể thiết kế 42

2.5.1 Mô hình thiết kế 42

2.5.2 Cách thức hoạt động 44

2.6 Cụ thể thiết kế các khối 44

2.6.1 Khối Program Counter (PC) 44

2.6.2 Khối RAM, ROM 46

2.6.3 Tập thanh ghi đa dụng (General Pupose Registers) 47

2.6.4 Thanh ghi cờ trạng thái (State Register) 49

2.6.5 Khối ALU 50

2.6.6 Đơn vị giải mã lệnh 54

2.6.7 Đơn vị điều khiển thực thi 54

2.7 Kết chương 56

CHƯƠNG 3: KẾT QUẢ THỰC THI 57

Trang 7

3.1 Khối Program Counter (PC) 57

3.2 Khối ROM 57

3.3 Khối RAM 58

3.4 Mô tả thanh ghi 58

3.5 Mô tả tập thanh ghi đa dụng (General Pupose Registers) 59

3.6 Mô tả thanh ghi IO 60

3.7 Mô tả thanh ghi cờ trạng thái (State Register) 60

3.8 Mô tả bộ MUX 61

3.9 Khối ALU 62

3.10 Đơn vị điều khiển thực thi 62

3.11 Đơn vị giải mã lệnh 63

3.12 Kết chương 64

CHƯƠNG 4: KẾT LUẬN 65

4.1 Đánh giá kết quả 65

4.2 Phạm vi ứng dụng 65

4.3 Hướng phát triển của đề tài 66

TÀI LIỆU THAM KHẢO 67

Trang 8

DANH MỤC THUẬT NGỮ

ALU Arithmetic and Logic Unit Đơn vị số học và logic

CPU Central Processing Unit Bộ xử lý trung tâm

CISC Complex Instruction Set

Computer

Máy tính có tập lệnh lớn và phức

tạp

CU Control Unit Đơn vị điều khiển

FPGA Field Programmable Gate

Arrays

Loại mạch tổ hợp có thể lập trình được

GPR General Purpose Register Thanh ghi đa năng

PC Program Counter Bộ đếm chương trình

MCU Microprogrammed Control Unit Đơn vị điều khiển vi chương trình

RISC Reduce Instruction Set

Computer

Máy tính có tập lệnh rút gọn và đơn

giản VHDL Verilog Hardware Description

Language

Ngôn ngữ mô tả phần cứng

Trang 9

DANH MỤC BẢNG

Bảng 1.1 Tóm tắt tập lệnh 22

Bảng 1.2 Các lệnh tương đương 24

Bảng 1.3 Tập mã lệnh 24

Bảng 2.1 Bảng xác định điều kiện tràn khi thực hiện X + Y 34

Bảng 2.2 Bảng xác định điều kiện tràn khi thực hiện X – Y 35

Bảng 2.3 Tập lệnh của bộ xử lý RISC 8 bit 40

Bảng 2.4 Các tín hiệu vào/ra của khối Program Count 46

Bảng 2.5 Các tín hiệu vào/ra của khối ROM 47

Bảng 2.6 Các tín hiệu vào/ra của khối RAM 47

Bảng 2.7 Các tín hiệu vào/ra của khối General Purpose Register 48

Bảng 2.8 Các tín hiệu vào/ra của khối State Register 50

Bảng 2.9 Nhóm lệnh cơ bản của ALU 51

Bảng 2.10 Tìm nạp toán hạng 52

Bảng 2.11 Các tín hiệu điều khiển 54

Trang 10

DANH MỤC HÌNH

Hình 1.1 Quy trình thiết kế 13

Hình 1.2 Dạng lệnh trong kiểu định vị thanh ghi 17

Hình 1.3 Dạng lệnh trong kiểu định vị tức thì thanh ghi 18

Hình 1.4 Dạng lệnh thâm nhập bộ nhớ trong của một số kiến trúc RISC 18

Hình 1.5 Chu kỳ lệnh của RISC 25

Hình 1.6 Chu kỳ lệnh của MCU không sử dụng Pipeline 25

Hình 1.7 Chu kỳ lệnh sử dụng Pipeline 26

Hình 1.8 Hiện tượng nghẽn đường ống 26

Hình 1.9 Sơ đồ chân của RISC 27

Hình 1.10 Kiến trúc của RISC 27

Hình 2.1 Giao diện của bộ xử lý theo kiến trúc RISC 30

Hình 2.2 Định dạng lệnh cho mỗi loại 41

Hình 2.3 Các bước thực thi một lệnh 44

Hình 2.4 Sơ đồ khối của Program Counter 44

Hình 2.5 Program Counter Symbol 45

Hình 2.6 Program ROM Symbol 46

Hình 2.7 RAM Symbol 46

Hình 2.8 Tập thanh ghi đa dụng 47

Hình 2.9 Sơ đồ khối của thanh ghi trạng thái 49

Hình 2.10 State Register Symbol 49

Hình 2.11 ALU Symbol 51

Hình 2.12 Đơn vị tìm nạp toán hạng 52

Trang 11

Hình 2.13 Sơ đồ trạng thái của đơn vị điều khiển thực thi 55

Hình 3.1 Kết quả thực thi khối PC 57

Hình 3.2 Kết quả thực thi khối ROM 57

Hình 3.3 Kết quả thực thi khối RAM 58

Hình 3.4 Kết quả thực thi mô tả thanh ghi 58

Hình 3.5 Kết quả thực thi mô tả thanh ghi đa dụng 59

Hình 3.6 Kết quả thực thi mô tả thanh ghi IO 60

Hình 3.7 Kết quả thực thi mô tả thanh ghi cờ trạng thái 60

Hình 3.8 Kết quả thực thi mô tả bộ MUX 61

Hình 3.9 Kết quả thực thi khối ALU 62

Hình 3.10 Kết quả thực thi mô tả đơn vị điều khiển thực thi 62

Hình 3.11a Kết quả thực thi mô tả tín hiệu điều khiển giải mã ALU 63

Hình 3.11b Kết quả thực thi mô tả tín hiệu điều khiển giải mã thanh ghi đa dụng 63 Hình 3.11c Kết quả thực thi mô tả tín hiệu điều khiển giải mã State Register 64

Trang 12

MỞ ĐẦU

1 LÝ DO CHỌN ĐỀ TÀI

Cùng với sự phát triển của xã hội, lĩnh vực Công nghệ thông tin và Truyền thông đã vươn lên chiếm vị thế ngày càng cao trong tất cả các lĩnh vực kinh tế, xã hội, cũng như trong đời sống Công nghệ thông tin bây giờ không chỉ được hiểu trong chiếc máy tính mà nó còn đi sâu vào các mặt đời sống xã hội, thông qua các

hệ nhúng, Một thành phần quan trọng của máy tính là bộ xử lý trung tâm (CPU)

Có rất nhiều công sức được đầu tư vào việc chế tạo các CPU nhằm tạo ra các máy tính đáp ứng yêu cầu ngày càng cao của xã hội Với sự phát triển nhanh chóng của công nghệ silicon và chi phí giảm của mạch tích hợp, bộ xử lý RISC đang gia tăng

sử dụng rộng rãi trong mọi lĩnh vực RISC (Reduced Instruction Set Computer) là một phần mở rộng của các nguyên tắc kiến trúc máy tính với tập lệnh đơn giản hóa Thiết kế đơn giản cung cấp hiệu năng vượt trội là lý tưởng để sử dụng Một số ứng dụng điển hình bao gồm: xử lý dữ liệu thương mại, các ứng dụng tính toán chuyên sâu khoa học và kỹ thuật, và kiểm soát thời gian thực

Để thiết kế một CPU với đầy đủ chức năng cần một công cụ đủ mạnh Từ đó dẫn đến sự ra đời của các ngôn ngữ mô tả phần cứng như VHDL,Verilog Ngôn ngữ mô tả phần cứng (VHDL) sẽ được sử dụng trong luận văn này Từ ngôn ngữ VHDL các nhà thiết kế phần cứng có thể thiết kế ra những thiết bị phần cứng như CPU, bộ vi điều khiển… một cách nhanh chóng và cũng có thể thực hiện mô phỏng

và kiểm tra khả năng hoạt động của thiết bị trước khi đưa vào sản xuất, nhờ vậy có thể giảm bớt thời gian, chi phí sản xuất

Luận văn đã được viết với mục đích nhằm nghiên cứu về thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC, phục vụ cho nhu cầu nghiên cứu các lĩnh vực chuyên sâu về thiết bị phần cứng sau này

Xuất phát từ những lợi ích thực tế mà bộ xử lý có thể mang lại và niềm hy

vọng của bản thân, tác giả đã mạnh dạn chọn đề tài “Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC” làm đề tài nghiên cứu cho luận văn tốt nghiệp của mình

Trang 13

- Thiết kế tập lệnh của bộ xử lý RISC 8 bit bằng ngôn ngữ VHDL

- Mô phỏng và đánh giá kết quả trên phần mềm Max + Plus II

3 ĐỐI TƯỢNG – PHẠM VI NGHIÊN CỨU

Thiết kế được xây dựng với mục đích tạo ra bộ xử lý đơn giản dựa trên kiến trúc RISC, phục vụ cho nhu cầu nghiên cứu các lĩnh vực chuyên sâu về thiết bị phần cứng

4 BỐ CỤC LUẬN VĂN

Luận văn được chia làm 4 chương với nội dung cụ thể như sau:

Chương 1: Giới thiệu về lõi mềm của bộ vi xử lý và định hướng thực hiện của luận văn

Chương này phân tích về nhiệm vụ của luận văn, định hướng giải quyết vấn

đề đặt ra, và tìm hiểu lý thuyết liên quan sẽ sử dụng

Chương 2: Thiết kế CPU 8 bit dựa trên kiến trúc RISC

Chương này trình bày tổ chức bộ nhớ CPU, tập lệnh của CPU và mô hình thiết kế cụ thể từng khối của bộ xử lý theo kiến trúc RISC 8 bit

Chương 3: Kết quả thực thi

Chương này trình bày kết quả thực thi của từng khối, mô phỏng bằng phần mềm Max + Plus II (dùng ngôn ngữ VHDL)

Chương 4: Kết luận

Trang 14

Chương này trình bày tóm tắt kết quả đạt được và hướng phát triển tiếp theo của luận văn

5 PHƯƠNG PHÁP NGHIÊN CỨU

Trang 15

CHƯƠNG 1: GIỚI THIỆU VỀ LÕI MỀM CỦA BỘ VI XỬ LÝ

VÀ ĐỊNH HƯỚNG THỰC HIỆN CỦA LUẬN VĂN

Tên đề tài: Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC

Đề tài bao gồm các nội dung cần phải thực hiện:

- Nghiên cứu kiến trúc RISC

- Thiết kế tập lệnh bằng ngôn ngữ VHDL

- Thử nghiệm và đánh giá

1.2 ĐỊNH HƯỚNG GIẢI QUYẾT VẤN ĐỀ

Quy trình thiết kế mà luận văn dựa vào để thực hiện:

Phân tích yêu cầu đề tài Chuẩn bị cơ sở lý thuyết Thiết kế mô hình tổng thể Thiết kế chi tiết trên lý thuyết Thiết kế bằng ngôn ngữ VHDL

Mô phỏng trên phần mềm Cài đặt trên kit thật

Đánh giá kết quả đạt được

Hình 1.1 Quy trình thiết kế

Trang 16

Trong luận văn sẽ thực hiện hầu hết các vấn đề trong quy trình trên, bao gồm:

1 Nghiên cứu kiến trúc RISC: Tìm hiểu kiến trúc RISC và tập lệnh của nó

2 Thiết kế tập lệnh bằng ngôn ngữ VHDL: Sử dụng ngôn ngữ VHDL để thiết kế lõi mềm cho bộ xử lý dựa vào kiến thức đã tìm hiểu được về kiến trúc RISC

3 Dựa vào thiết kế, mô phỏng và đánh giá kết quả đạt được

Lõi mềm (Soft – Core processor) là một dạng của xu hướng thiết kế kiến trúc máy tính thông thường, được biết như máy tính có thể cấu hình lại Nó là mô hình ngôn ngữ mô tả phần cứng (Hardware Description Language - HDL) của bộ vi xử

lý có thể được tối ưu để dùng trong các ứng dụng và được tổng hợp cho đối tượng FPGA hoặc ASIC

Trong nhiều ứng dụng, lõi mềm cung cấp một số lợi ích hơn việc đặt mua các bộ xử lý đã được thiết kế sẵn như giảm giá thành sản phẩm, linh hoạt, không

phụ thuộc vào nền tảng sẵn có, hạn chế tối đa sự hao mòn

Ngày nay, lõi mềm và FPGA được sử dụng nhiều trong các ứng dụng nhúng

RISC (Reduce Intruction Set Computer - Máy tính với tập lệnh đơn giản hóa)

là một phương pháp thiết kế các VXL theo hướng đơn giản hóa tập lệnh, trong đó thời gian thực thi tất cả các lệnh đều như nhau

VXL RISC được biết đến đầu tiên là siêu máy tính CDC 6600 được Jim Thornton và Seymour Cray thiết kế năm 1964, nó có 74 mã lệnh cộng với 12 máy tính đơn giản được gọi là “bộ xử lý ngoại vi” để xử lý I/O CDC 6600 sử dụng kiến

Trang 17

trúc Load/Store, nó hỗ trợ 2 phương pháp đánh địa chỉ, có 11 đơn vị được Pipeline,

5 đơn vị đọc dữ liệu và 2 đơn vị để lưu dữ liệu (bộ nhớ của nó được tổ chức theo băng do đó các đơn vị đọc ghi có thể hoạt động đồng thời) Tốc độ xung đồng hồ/lệnh nhanh hơn 10 lần so với tốc độ truy xuất bộ nhớ

Một máy tính khác được thiết kế với kiến trúc Load/Store là Data General Nova Đây là một máy tính nhỏ 16 bit được thiết kế năm 1968 bởi một công ty Mỹ tên là Data General

Tuy nhiên VXL RISC được biết đến nhiều nhất là dự án được tài trợ bởi chương trình VLSI (Very Large - ScaleIntegration) của DARPA (Defense Advanced Research Projects Agency) Chương trình này đã cho ra đời rất nhiều cải tiến liên quan đến thiết kế, sản xuất chip và cả đồ họa máy tính

Dự án RISC cho ra đời VXL RISC - I năm 1982 VXL này chứa 44.420 transistor, với 32 lệnh nhưng hoàn toàn vượt xa các VXL đơn chip cùng thời VXL RISC - II ra đời năm 1983 với 39 lệnh, chứa 40.760 transistor và nhanh gấp 3 lần RISC - I

Cũng khoảng thời gian đó Jonh L.Hennessy thực hiện dự án MIPS ở đại học Stanford năm 1981 MIPS hầu như chỉ tập trung vào kỹ thuật Pipeline nhằm tận dụng tối đa khả năng của các VXL Cho dù đã được sử dụng trước đó, nhưng với MIPS, kỹ thuật này đã thực sự được cải tiến vượt bậc Nhưng vấn đề quan trọng nhất ở đây, và có lẽ cũng phiền toái nhất, là nó đòi hỏi tất cả các lệnh bắt buộc phải được thực thi trong 1 chu kỳ máy Nếu đáp ứng được yêu cầu này, Pipeline có thể hoạt động ở tốc độ rất cao và đây cũng là yếu tố quyết định đến tốc độ của VXL Tuy nhiên nó cũng có mặt trái là phải bỏ đi rất nhiều lệnh có ích như nhân, chia

Hầu hết các dự án trên đều nhằm mục đích cải tiến các kỹ thuật hiện có, phải chờ đến năm 1975, dự án đầu tiên nhằm cho ra đời 1 chip RISC hoàn chỉnh được thực hiện bởi IBM Được đặt tên theo số của ngôi nhà nơi dự án được thực hiện, dự

án này đã cho ra đời họ VXL IBM 801 được sử dụng rộng rãi trong các phần cứng

của IBM

Trang 18

Đến năm 1986, tất cả các dự án dựa trên kiến trúc RISC bắt đầu cho ra đời sản phẩm Ngày nay, hầu hết các chip RISC, đều được thiết kế dựa trên kiến trúc RISC - II của Berkeley

Các hệ thống phổ biến ngày nay sử dụng cấu trúc RISC:

- Họ MIPS, trong các máy tính SGI, PlayStation và Nintendo 64 game consoles

- Họ POWER trong các SuperComputers/mainframes của IBM

- Freescale (trước đây là Motorola SPS) 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

- Hewlett – Packard PA – RISC

- DEC Alpha

- ARM – Palm, Inc Ban đầu sử dụng Motorola 680 x 0 (CISC) trong những PDA đầu tiên, nhưng hiện tại là ARM (RISC); Nintendo sử dụng 1 chip ARM7 trong Game Boy Advance và Nintendo DS Nhiều nhà sản xuất điện thoại di động, như Nokia cũng dựa trên kiến trúc của ARM Trải qua một thời gian dài tập lệnh của RISC ngày càng tăng, vì thế nhiều người bắt đầu sử dụng thuật ngữ “Load/Store” để mô tả RISC CPU, vì đây là mấu chốt của kiến trúc RISC Thay vì CPU xử lý nhiều phương pháp đánh địa chỉ, kiến trúc Load/Store sử dụng những đơn vị chuyên biệt để thực hiện những dạng rất đơn giản các quá trình Load và Store

1.3.2.2 ĐẶC TÍNH CƠ BẢN CỦA KIẾN TRÚC RISC

- Chu kỳ lệnh được chia thành 2 chu kỳ: Tìm nạp lệnh và thực thi lệnh

- Lệnh được thực thi trong 1 chu kỳ xung clock

- Lệnh có chiều dài cố định (16 bit hay 32 bit), và có định dạng dễ giải mã

Trang 19

- Tập lệnh có số lượng lệnh ít

- Ít chế độ định địa chỉ

- Hạn chế lệnh truy xuất bộ nhớ, chỉ truy xuất thông qua con trỏ dữ liệu

- Tất cả các lệnh được thực hiện thông qua các thanh ghi của CPU

- Thường sử dụng mạch logic để điều khiển thực thi lệnh hơn là sử dụng vi chương trình (Microprogram) như CISC

- Số lượng thanh ghi đa năng khá nhiều (ít nhất là 32 Register)

- Đều được thiết kế kiểu Pipeline lệnh

Trong bộ xử lý RISC, các lệnh số học và logic chỉ được thực hiện theo kiểu thanh ghi và tức thì, còn những lệnh đọc và ghi vào bộ nhớ là những lệnh có toán hạng bộ nhớ thì được thực hiện với những kiểu định vị khác

Đây là kiểu định vị thường dùng cho các bộ xử lý RISC, các toán hạng nguồn và kết quả đều nằm trong thanh ghi mà số thứ tự được nêu ra trong lệnh Hình 1.2 là ví dụ về kiểu thanh ghi và dạng các lệnh tương ứng trong một số kiến trúc RISC

Hình 1.2 Dạng lệnh trong kiểu định vị thanh ghi

Trang 20

Hình 1.4 Dạng lệnh thâm nhập bộ nhớ trong của một số kiến trúc RISC

Trang 21

4 Kiểu định vị gián tiếp bằng thanh ghi + độ dời

Đây là kiểu đặc thù cho các kiến trúc RISC Địa chỉ toán hạng được tính như sau: Địa chỉ toán hạng = Thanh ghi (địa chỉ ) + độ dời

Kiểu định vị trực tiếp chỉ là một trường hợp đặc biệt của kiểu này khi thanh ghi (địa chỉ) = 0 Trong các bộ xử lý RISC, một thanh ghi (R0 hoặc R31) được mắc

vào điện thế thấp (tức là 0) và ta có định vị trực tiếp khi dùng thanh ghi đó như là thanh ghi địa chỉ

Một vài bộ xử lý RISC, ví dụ bộ xử lý PowerPC, dùng kiểu định vị này

Thiết kế dựa trên tập lệnh của Atmel AVR AT90S1200 Bằng cách này, thiết

kế có thể sử dụng các công cụ assempler, simulater do Atmel cung cấp Tập lệnh được chia thành 4 nhóm lệnh: (xem bảng 1.1)

- Nhóm lệnh số học và logic: Gồm các lệnh tính toán số học và logic

- Nhóm lệnh rẽ nhánh: Gồm các lệnh nhảy không điều kiện, nhảy có điều

kiện theo các cờ trạng thái, lệnh gọi hàm và Return

- Nhóm lệnh truyền dữ liệu: Gồm các lệnh di chuyển dữ liệu giữa các

thanh ghi, ô nhớ RAM và Port IO bên ngoài

- Nhóm lệnh về bit: Gồm các lệnh bit như xóa, đặt bit, lệnh dịch xoay

ARITHMETIC AND LOGIC INSTRUCTIONS

ADC Add with Carry Two Registers S,Z,C,N,V,H SUB Subtract Two Registers S,Z,C,N,V,H

Trang 22

SUBI Subtract Constant from Register S,Z,C,N,V,H SBC Subtract with Carry Two Registers S,Z,C,N,V,H SBCI Subtract with Carry Constant from Register S,Z,C,N,V,H

ANDI Logical AND Register and Constant S,Z,N,V

ORI Logical OR Register and Constant S,Z,N,V

COM One’s Complement Register S,C,Z,N,V NEG Negate (2’s Complement) Register S,C,Z,N,V,H

CBR Clear Bit(s) in Register S,Z,N,V

RCALL Relative Subroutine Call None

CPC Compare with Carry (Rd – Rr - C) S,C,Z,N,V,H CPI Compare Register with Immediate (Rd - K) S,C,Z,N,V,H BRBS Branch if Status Flag Set None

BRBC Branch if Status Flag Cleared None

BREQ Branch if Equal (Z = 1) None

BRNE Branch if Not Equal (Z = 0) None

Trang 23

BRCS Branch if Carry Set (C = 1) None BRCC Branch if Carry Cleared (C = 0) None BRSH Branch if Same or Higher (C = 0) None BRLO Branch if Lower (C = 1) None BRMI Branch if Minus (N = 1) None

BRGE Branch if Greater of Equal, Signed (S = 1) None BRLT Branch if Less than Zero, Signed (S = 0) None BRHS Branch if Half Carry Set (H = 1) None BRHC Branch if Half Carry Cleared (H = 0) None BRVS Branch if Overflow Flag is Set (V = 1) None BRVC Branch if Overflow Flag is Cleared (V = 0) None

DATA TRANSFER INSTRUCTIONS

LDI Load Immediate to Register None

LD Z Load Indirect with Z-Pointer None

LD Z+ Load Indirect and Post-Increment with Z-Pointer None

LD –Z Load Indirect and Pre-Decrement with Z-Pointer None

ST Z Store Indirect with Z-Pointer None

ST Z+ Store Indirect and Post-Increment with Z-Pointer None

ST –Z Store Indirect and Pre-Decrement with Z-Pointer None

BIT INSTRUCTIONS

CBI Clear Bit in I/O Register None

Trang 24

ROL Rotate Left through Carry S,C,Z,N,V ROR Rotate Right through Carry S,C,Z,N,V ASR Arithmetic Shift Right S,C,Z,N,V

SEV Set Two’s Complement Overflow V

CLV Clear Two’s Complement Overflow V

SHE Set Half-carry Flag in SREG H

CLH Clear Half-carry Flag in SREG H

Bảng 1.1 Tóm tắt tập lệnh

Theo thiết kế thì RISC có 6 chế độ định địa chỉ RA, RB được xem như là toán hạng đích và toán hạng nguồn

Lệnh có một toán hạng là RA: vừa là thanh ghi nguồn vừa là thanh ghi đích

Ví dụ như lệnh: dịch, xoay, set bit

Trang 25

Lệnh có hai toán hạng là RA và RB Sau khi tính toán kết quả được ghi vào RA.Ví dụ như lệnh toán học và logic…

Toán hạng là I/O register Địa chỉ được chứa trong 6 bit trong từ lệnh Cách định địa chỉ này được sử dụng trong lệnh IN và OUT

Toán hạng là ô nhớ RAM có địa chỉ chứa trong thanh ghi Z Cách định địa chỉ được sử dụng trong lệnh LD và ST

Cách định địa chỉ này được sử dụng trong lệnh RJMP, RCALL Địa chỉ lệnh

kế được tính bằng PC + Offset Offset được chứa trong từ lệnh

Toán hạng là hằng số 8 bit được cho trong từ lệnh

Lệnh của RISC có chiều dài cố định và dễ giải mã Trong thiết kế này, lệnh

có chiều dài là 16 bit

4 Mã máy

Trong tập lệnh có thể ghép các lệnh tương đương để có thể sử dụng chung

mã máy Chính vì vậy mà tập mã máy sẽ được rút gọn hơn giúp cho việc giải mã đơn giản hơn Bảng 1.2 chỉ ra các lệnh tương đương sử dụng chung mã máy và bảng 1.3 là bảng tập mã máy

Trang 26

Bảng 1.2 Các lệnh tương đương

Bảng 1.3 Tập mã lệnh

Trang 27

1.3.2.5 PIPELINE PROCESSING

Trong kiến trúc của RISC chu kỳ lệnh được chia thành 2 chu kỳ nhỏ: Chu kỳ tìm nạp lệnh (Fetch) và chu kỳ thực thi lệnh (Execute) được thể hiện ở hình 1.5

Hình 1.5 Chu kỳ lệnh của RISC

Trong chu kỳ tìm nạp lệnh, mã máy của 1 lệnh được nạp vào thanh ghi lệnh,

PC bắt đầu nạp lệnh mới Tại chu kỳ thực thi lệnh đơn vị điều khiển sẽ giải mã để biết lệnh cần thực hiện và toán hạng cần tác động, tính toán kết quả, chốt kết quả, và ghi lại kết quả tại pha cuối cùng của chu kỳ thực thi lệnh

Chu kỳ lệnh của RISC sẽ được chia thành 2 chu kỳ Fetch và Execute Nếu 2 chu kỳ này hoạt động nối tiếp nhau, chu kỳ đầu tìm nạp lệnh chu kỳ 2 thực thi lệnh như hình 1.6, thì 1 chu kỳ lệnh sẽ phải mất 2 chu kỳ xung Clock

Hình 1.6 Chu kỳ lệnh của MCU không sử dụng PipeLine

Ý tưởng của việc sử dụng đường ống ở đây là cho 2 chu kỳ Fetch và Execute cùng hoạt động song song, có nghĩa là trong 1 chu kỳ xung Clock MCU sẽ tìm nạp lệnh mới và thực thi lệnh cũ xem hình 1.7, vì vậy để thực hiện một chu kỳ lệnh chỉ tốn 1 xung clock, do đó RISC sẽ hoạt động nhanh hơn

Trang 28

Hình 1.7 Chu kỳ lệnh sử dụng Pipeline

Tại chu kỳ Reset = 0 lệnh 0 được tìm nạp, sau đó tại chu kỳ 1 lệnh 0 sẽ được thực hiện đồng thời PC sẽ tìm nạp lệnh 1 Và tại chu kỳ 2, lệnh 1 sẽ được thực thi, đồng thời PC sẽ tìm nạp lệnh 2 cứ như thế MCU sẽ tìm nạp và thực thi chương trình song song với nhau, PC sẽ trỏ đến lệnh đang được tìm nạp và sẽ được thực thi

ở chu kỳ kế

Khi gặp lệnh rẽ nhánh đường ống sẽ bị nghẽn Vì trong khi lệnh rẽ nhánh được thực thi thì lệnh kế đó đã được đưa vào đường ống, nhưng trong trường hợp lệnh rẽ nhánh nhảy đến thực thi 1 lệnh khác với lệnh đã nạp trong đường ống thì hiện tượng nghẽn đường ống sẽ xảy ra xem hình 1.8

Hình 1.8 Hiện tượng nghẽn đường ống

Để giải quyết việc nghẽn đường ống thì: Vì đường ống chỉ có 2 đơn vị hoạt động song song Khi lệnh kế tiếp thực thi đang vào đường ống thì lệnh rẽ nhánh cũng đang thực thi, nếu lệnh rẽ nhánh có yêu cầu rẽ nhánh thì PC sẽ phải nạp giá trị mới và tìm nạp lệnh tại điểm nhảy đến thay vì nạp lệnh kế để đưa vào đường ống Như vậy việc nghẽn đường ống đã được khắc phục

Trang 29

1.3.3 S Ơ ĐỒ KHỐI CỦA THIẾT KẾ RISC

Hình 1.9 Sơ đồ chân của RISC

Có 3 port I/O Port B, Port C, Port D mỗi port có độ rộng 8 bit (3 port = 24 pins), và có 2 chân Input là Clock và Reset (tích cực thấp) Mỗi Port có 8 bit (theo thiết kế Port này chỉ là Port xuất)

Hình 1.10 Kiến trúc của RISC

Kiến trúc của RISC được chia thành 2 đơn vị:

- Đơn vị giải mã và điều khiển lệnh (Control Unit): Gồm có các Modul giải

mã lệnh và Modul điều khiển

Trang 30

- Đơn vị đường dữ liệu: Gồm có Program Couter, thanh ghi lệnh, ALU, RAM,

Status Register, General Purpose Register, Data Mux, I/O

1.3.3.3 ĐẶC ĐIỂM TỪNG KHỐI TRONG KIẾN TRÚC RISC

1 PC (Program Counter)

Program Counter chứa địa chỉ lệnh thực thi, nó gửi địa chỉ lệnh đến ROM chương trình

2 Program ROM (Read Only Memory)

Chương trình ROM nhận lệnh từ PC và chốt vào thanh ghi lệnh (IR)

3 Instruction Register (IR)

Thanh ghi lệnh (IR) nhận lệnh từ ROM sau đó chuyển lệnh đến đơn vị điều khiển

4 Control Unit (CU)

Đơn vị điều khiển (CU) nhận lệnh từ IR để giải mã, sau khi giải mã xong thì điều khiển các tín hiệu đồng bộ để thực thi lệnh

5 General Purpose Register

Do RISC hạn chế về truy xuất ô nhớ, nên RISC không có các lệnh truy xuất trực tiếp từ ô nhớ của RAM chỉ có lệnh LD và ST dùng truy xuất gián tiếp thông qua con trỏ Z là thanh ghi đa dụng

Tập thanh ghi đa dụng chứa 16 thanh ghi, cung cấp đồng thời 2 toán hạng thanh ghi cho ALU, và địa chỉ là nội dung thanh ghi Z trỏ tới ô nhớ RAM

6 ALU (Arithmetic and Logic Unit)

ALU có nhiệm vụ thực thi các phép tính trên 2 toán hạng

7 DATA MUX

Data Mux dùng để chọn dữ liệu để ghi vào tập thanh ghi đa dụng hoặc làm toán hạng cho ALU

Trang 31

8 Khối I/O

Modul I/O gồm 3 thanh ghi mà các bit được đưa ra ngoài ở chânngõ ra Các thanh ghi I/O có thể được đọc và ghi thông qua các bus dữ liệu

9 RAM (Random Access Memory)

RISC có 2 đơn vị: tìm nạp lệnh và thực thi lệnh hoạt động song song nên đòi hỏi phải có bộ nhớ chương trình và bộ nhớ dữ liệu riêng biệt Vì vậy bộ nhớ chương trình sẽ được lưu trong ROM và bộ nhớ dữ liệu được cất trong RAM RAM sẽ được khởi động với giá trị là 00H

Thiết kế đường dữ liệu (Datapath) và đơn vị điều khiển (Control Unit) theo kiến trúc RISC 8 bit Microcontroller

Phần thiết kế bằng ngôn ngữ VHDL và mô phỏng được thực hiện trên môi trường Max + Plus II của hãng Altera

Luận văn đã tiến hành nghiên cứu về kiến trúc của RISC, bao gồm những nội dung chính sau:

- Tìm hiểu tổng thể kiến trúc RISC

- Nghiên cứu chi tiết kiến trúc RISC

- Nghiên cứu cụ thể chức năng và cách thức hoạt động của các khối trong kiến trúc RISC

- Tìm hiểu tập lệnh của kiến trúc RISC từ đó phân tích đặc điểm chung và riêng của chúng để hình thành quy tắc giải mã lệnh

- Bên cạnh đó là các lý thuyết về thiết kế lõi mềm,

Trang 32

CHƯƠNG 2: THIẾT KẾ CPU 8 BIT DỰA TRÊN

KIẾN TRÚC RISC 2.1 NHIỆM VỤ

Thiết kế bộ xử lý bao gồm tập lệnh RISC và sử dụng Single Instruction – Single Data (SISD) thực hiện lệnh Đặc điểm chính của nó là:

- Thanh ghi đa dụng 8 bit

- Độ rộng ROM 16 bit bộ nhớ cấp phát 256

- Độ rộng RAM 16 bit bộ nhớ cấp phát 256

- ALU với thao tác số học và logic cơ bản

Hình 2.1 Giao diện của bộ xử lý theo kiến trúc RISC

2.2 TỔ CHỨC BỘ NHỚ CỦA CPU [9]

CPU có khả năng định vị địa chỉ 4096 byte nhớ thông qua bus địa chỉ 12 bit

Bộ nhớ này phân chia thành 16 trang mỗi trang là 256 byte, trang đầu tiên nằm trong CPU, 4 bit có trọng số cao nhất của tuyến địa chỉ thiết lập địa chỉ trang (Page), 8 bit có trọng số thấp nhất của nó chỉ độ dời (Offset) Bộ nhớ được phân thành 16 trang (Page 0  Page15)

Trang 33

2.3 TẬP LỆNH CỦA CPU

2.3.1 THIẾT KẾ TẬP LỆNH [4]

Phân loại các lệnh sử dụng trong bộ xử lý:

Thao tác số học: Các phép tính số học cơ bản là nền tảng cho hoạt động của

bộ vi xử lý Các phép tính số học nhị phân dùng như đầu vào giá trị của hai toán hạng và kết quả là một giá trị đầu ra duy nhất Ngoài ra, trừ, nhân, và chia là tất cả các thao tác nhị phân Thao tác số học, có một toán hạng đầu vào duy nhất và tạo ra một kết quả duy nhất Phủ định số học giống như trừ đi một giá trị từ con số không,

là một hoạt động nguyên phân thường được triển khai thực hiện trong các bộ vi xử

lý Các thao khác bao gồm các hàm ví dụ như sin, cos, và logarit

Thao tác logical: Các phép tính logic thao tác trên các bit riêng lẻ giá trị được biểu diễn như là các số nhị phân Các phép tính logic nhị phân, yêu cầu hai toán hạng đầu vào, bao gồm AND, OR, và loại trừ OR (XOR) Thao tác logic bổ sung bit - by - bit, NOT, là một ví dụ về một thao tác logic đơn nguyên

Thao tác điều khiển: Người lập trình cho rằng, các lệnh trong một chương

trình sẽ được thực hiện theo thứ tự mà chúng xuất hiện trong mã nguồn Chúng được thực hiện theo một thứ tự tuần tự đơn giản Tuy nhiên, sức mạnh thực sự của một hệ thống máy tính dựa trên khả năng so sánh giá trị và đưa ra quyết định dựa trên sự so sánh này Quyết định lựa chọn 1 trong 2 khả năng sau: 1) Thực hiện lệnh tiếp theo trong chuỗi nếu kết quả so sánh là False, hoặc 2) Rẽ nhánh đến một lệnh

đã xác định ở một nơi khác trong chương trình nếu kết quả so sánh là True Loại thao tác này được gọi là rẽ nhánh có điều kiện Thao tác điều khiển khác bao gồm một rẽ nhánh không điều kiện, trong đó quyết định nhị phân luôn luôn cho kết quả

là True, và thao tác nhảy (Jump) tương tự, trong đó trình tự thực hiện luôn luôn chuyển đến các lệnh mục tiêu được chỉ định

Thao tác truyền dữ liệu: Các thao tác truyền dữ liệu được sử dụng để di

chuyển các giá trị từ một vị trí lưu trữ này đến vị trí lưu trữ khác mà không thay đổi giá trị trong mã nguồn lưu trữ ban đầu Thao tác truyền dữ liệu được sử dụng để di

Trang 34

chuyển giá trị giữa các thanh ghi hoặc để đọc các giá trị, hoặc viết các giá trị từ bộ nhớ Thao tác truyền dữ liệu thực sự là sao chép một giá trị từ một vị trí lưu trữ này đến vị trí lưu trữ khác thay vì di chuyển vật lý giá trị

Mỗi lệnh phải được đặc tả thao tác của chính nó, các toán hạng được thao tác

và lệnh tiếp theo được thực thi Chúng ta sẽ giả định rằng có một máy tính ngầm xác định lệnh tiếp theo được thực hiện Trong đặc tả các toán hạng, chúng ta có thể chỉ định cụ thể hoặc ngầm định Nếu chúng ta chỉ định mỗi toán hạng một cách cụ thể, mỗi thao tác nhị phân sẽ cần ba trường, hai trường để xác định các toán hạng đầu vào và một trường xác định toán hạng đích Chúng ta có thể làm giảm số lượng các trường của toán hạng cần thiết trong mỗi lệnh Số lượng các toán hạng được chỉ định cụ thể dẫn đến các tùy chọn sau đây:

Three - address machine: Một máy ba địa chỉ rõ ràng xác định cả hai đầu vào toán hạng và đích cho các giá trị đầu ra trong mỗi lệnh số học Ví dụ, trong ngôn ngữ assembly định dạng phép cộng add r1, r2, r3 để xác định tổng của thanh ghi r2 và r3 kết quả được lưu trong thanh ghi r1 (Nó giống như r1 = r3 + r2)

Two - address machine: Trong một máy hai địa chỉ này, chỉ có hai toán hạng nguồn được quy định một cách cụ thể Các toán hạng đích mặc nhiên giả định giống như trong các toán hạng nguồn Ví dụ, add r2, r3 tức là tính tổng của r2 và r3 và kết quả lưu vào r2 Cách tiếp cận này làm giảm số lượng bit cần thiết trong lệnh để xác định toán hạng Tuy nhiên, mức giảm này đi kèm với sự phức tạp hơn trong việc xác định các toán hạng trong ngôn ngữ assembly

Ngày đăng: 27/04/2021, 14:11

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[3]. Charles H. Roth, Jr (1997), Digital Systems Design Using VHDL, the University of Texas at Austin Sách, tạp chí
Tiêu đề: Digital Systems Design Using VHDL
Tác giả: Charles H. Roth, Jr
Năm: 1997
[4]. David J. Lilja and Sachin S. Sapatnekar (2005), Designing Digital Computer Systems with Verilog, Cambridge University Sách, tạp chí
Tiêu đề: Designing Digital Computer Systems with Verilog
Tác giả: David J. Lilja and Sachin S. Sapatnekar
Năm: 2005
[5]. Enoch O. Hwang (2005), Digital Logic and Microprocessor Design With VHDL, La Sierra University, Riverside Sách, tạp chí
Tiêu đề: Digital Logic and Microprocessor Design With VHDL
Tác giả: Enoch O. Hwang
Năm: 2005
[6]. Katevenis, M.G.H (1985), Reduced Instruction Set Computer Architectures for VLSI, Cambridge, Mass: MIT Press Sách, tạp chí
Tiêu đề: Reduced Instruction Set Computer Architectures for VLSI
Tác giả: Katevenis, M.G.H
Năm: 1985
[9]. William Stallings (2009), Computer Organization and Architecture, Designing for Performance. Website Sách, tạp chí
Tiêu đề: Computer Organization and Architecture
Tác giả: William Stallings
Năm: 2009
[2]. Behrooz Parhami (2005), Computer Architecture: From Microprocessors to Supercomputers Khác
[7]. Zainalabedin Navabi (1997), VHDL: Analysis and Modeling of Digital Systems Khác

HÌNH ẢNH LIÊN QUAN

Hình 1.1. Quy trình thiết kế - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 1.1. Quy trình thiết kế (Trang 15)
Hình 1.2.  Dạng lệnh trong kiểu định vị thanh ghi - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 1.2. Dạng lệnh trong kiểu định vị thanh ghi (Trang 19)
Hình 1.3. Dạng lệnh trong kiểu định vị tức thì  thanh ghi - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 1.3. Dạng lệnh trong kiểu định vị tức thì thanh ghi (Trang 20)
Hình 1.4. Dạng lệnh thâm nhập bộ nhớ trong của một số kiến trúc RISC - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 1.4. Dạng lệnh thâm nhập bộ nhớ trong của một số kiến trúc RISC (Trang 20)
Bảng 1.2. Các lệnh tương đương - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Bảng 1.2. Các lệnh tương đương (Trang 26)
Hình 1.8. Hiện tượng nghẽn đường ống - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 1.8. Hiện tượng nghẽn đường ống (Trang 28)
Hình 1.7. Chu kỳ lệnh sử dụng Pipeline - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 1.7. Chu kỳ lệnh sử dụng Pipeline (Trang 28)
Hình 1.10. Kiến trúc của RISC - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 1.10. Kiến trúc của RISC (Trang 29)
Hình 1.9. Sơ đồ chân của RISC - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 1.9. Sơ đồ chân của RISC (Trang 29)
Hình 2.1.  Giao diện của bộ xử lý theo kiến trúc RISC - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 2.1. Giao diện của bộ xử lý theo kiến trúc RISC (Trang 32)
Bảng 2.1. Bảng xác định điều kiện tràn khi thực hiện X +Y - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Bảng 2.1. Bảng xác định điều kiện tràn khi thực hiện X +Y (Trang 36)
Bảng 2.3. Tập lệnh của bộ xử lý RISC 8 bit - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Bảng 2.3. Tập lệnh của bộ xử lý RISC 8 bit (Trang 42)
Hình 2.2. Định dạng lệnh cho mỗi loại lệnh - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 2.2. Định dạng lệnh cho mỗi loại lệnh (Trang 43)
Hình 2.3 . Các bước thực thi một lệnh - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 2.3 Các bước thực thi một lệnh (Trang 46)
Hình 2.4 . Sơ đồ khối của Program Counter - Thiết kế lõi mềm cho bộ xử lý theo kiến trúc RISC
Hình 2.4 Sơ đồ khối của Program Counter (Trang 46)

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w