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

Nghiên cứu cấu trúc ngắt đã có và ứng dụng vào việc thiết kế CPU RISC 32 BIT

82 33 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 82
Dung lượng 3,23 MB

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

Nội dung

Giới thiệu a.Các chế độ hoạt động của ARM Bộ xử lý ARM thông thường có 7 chế độ hoạt động khác nhau, bao gồm:  Chế độ User User mode: chế độ này được sử dụng trong trạng thái thực thi

Trang 1

-

TRẦN VIỆT DŨNG

NGHIÊN CỨU CẤU TRÚC NGẮT ĐÃ CÓ

VÀ ỨNG DỤNG VÀO VIỆC THIẾT KẾ CPU RISC 32BIT

Chuyên ngành : Kỹ thuật điện tử

LUẬN VĂN THẠC SĨ

Trang 2

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 : PGS.TS LÊ TIẾN THƯỜNG

Cán bộ chấm nhận xét 2 : TS HOÀNG TRANG

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 TP HỒ CHÍ MINH

Trang 3

Tp.HCM, ngày 02 tháng 12 năm 2010

NHIỆM VỤ LUẬN VĂN THẠC SĨ

I- TÊN ĐỀ TÀI:

NGHIÊN CỨU CẤU TRÚC NGẮT ĐÃ CÓ

VÀ ỨNG DỤNG VÀO VIỆC THIẾT KẾ CPU RISC 32-BIT

II- NHIỆM VỤ VÀ NỘI DUNG:

- Nghiên cứu các cấu trúc ngắt trong một vài bộ vi xử lý

- Thiết kế bộ vi xử lý RISC 32-bit có ngắt

- Cài đặt bộ vi xử lý RISC 32-bit trên FPGA

IV- NGÀY HOÀN THÀNH NHIỆM VỤ : 02/12/2010

V- HỌ VÀ TÊN CÁN BỘ HƯỚNG DẪN : ThS TỐNG VĂN ON

Nội dung và đề cương luận văn thạc sĩ đã được hội đồng chuyên ngành thông qua

Trang 4

Tôi trân trọng gửi đến Thạc Sĩ Tống Văn On lời cảm ơn chân thành vì sự hướng dẫn tận tì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 của Thầy trong suốt thời gian tôi thực hiện luận văn

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 TPHCM đã 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

Xin gửi lời cảm ơn sâu sắc nhất đến bạn Trần Hoàn người đã hổ trợ cho tôi bộ kit DE2 để tôi có thể hoàn thành được luận văn một cách tốt nhất

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

TRẦN VIỆT DŨNG

Trang 5

MỤC LỤC Lời cảm ơn!

Chương 1 : TỔNG QUAN VỀ CẤU TRÚC NGẮT TRONG HỆ VI XỬ LÝ 1

I Khái niệm và vai trò của ngắt trong hệ vi xử lý 1

II Điều khiển ngắt trong hệ vi xử lý 4

Chương 2: NGHIÊN CỨU MỘT VÀI CẤU TRÚC NGẮT I Cấu trúc ngắt trong họ vi điều khiển 8051 6

II Cấu trúc ngắt trong họ vi điều khiển PIC16 8

III Cấu trúc ngắt trong ARM 9

1 Giới thiệu 9

2 Các ngoại lệ của ARM 11

3 Các ngắt của ARM 14

IV Cấu trúc ngắt trong máy tính 16

1.Cấu trúc ngắt trong máy tính PC AT 16

2 Cấu trúc ngắt trong máy tính PC Pentium 17

V Kết luận 19

Chương 3 THIẾT KẾ CPU RISC 20

I Tổng quan về máy tính 20

II Tập lệnh 21

1 Tóm tắt tập lệnh 21

2 Định dạng lênh 22

3 Các chế độ định địa chỉ 24

III Đường dữ liệu đơn chu kỳ 23

1 Tìm nạp lệnh 23

2 Giải mã lệnh 24

3 Thực thi lệnh 24

4 Lắp ghép các thành phần đường dữ liệu 29

IV Đường dữ liệu đa chu kỳ 30

1 Tổng quan về đa chu kỳ 30

2 Đường dữ liệu đa chu kỳ 31

Trang 6

3 Tạo clock cho đường dữ liệu đa chu kỳ 32

4 Năm bước của lệnh 33

5 Điều khiển đa chu kỳ 38

V Hiện thực hóa thiết kế CPU RISC đa chu kỳ bằng ngôn ngữ VHDL 42

1 Thiết kế thư viện các hằng số 42

2 Thiết kế tập thanh ghi 42

3 Thiết kế ALU 43

4 Thiết kế đơn vị điều khiển 44

5 Thiết kế bộ nhớ 45

6 Thiết kế các thanh ghi 46

7 Thiết kế các bộ MUX 47

8 Kết quả mô phỏng CPU RISC thực thi các lệnh cơ bản 48

Chương 4: THIẾT KẾ CPU RISC CÓ NGẮT 49

I Sửa đổi CPU RISC 32 bit hổ trợ ngắt 49

II Thiết kế đơn vị điều khiển ngắt 56

III Tổng hợp CPU RISC 32 bít có điều khiển ngắt 59

Chương V: KẾT QUẢ VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 60

I Kết quả thực hiện 60

II Hướng phát triển đề tài 60

Tài liệu tham khảo 61

Phụ lục 1: Kết quả mô phỏng 10 lệnh cơ bản

Phụ lục 2: Mã code VHDL

Trang 7

DANH MỤC HÌNH VẼ

Hình 1.1 Sơ đồ khối một bộ xử lý 1

Hình 1.2 Sơ đồ khối một hệ vi xử lý đơn giản 2

Hình 1.3 Điều khiển ngoại vi bằng phương pháp hỏi vòng 2

Hình 1.4 Điều khiển ngoại vi bằng phương pháp kích ngắt 3

Hình 1.5 Minh họa việc thực thi chương trình có và không có ngắt xảy ra 4

Hình 1.6 Điều khiển ngoại vi bằng phương pháp kích ngắt có bộ điều khiển ngắt 5

Hình 2.1 Sơ đồ khối họ vi điều khiển 8051 6

Hình 2.2 Sơ đồ khối khối điều khiển ngắt của họ vi điều khiển 8051 7

Hình 2.3 Mô hình điều khiển ngắt trong vi điều khiển PIC16C84 8

Hình 2.4 Mô hình điều khiển ngắt trong vi điều khiển PIC16F887 8

Hình 2.5 Tập thanh ghi của ARM 7 10

Hình 2.6 Mô hình phân vùng bộ nhớ RAM động trong máy tính PC AT 16

Hinh 2.7 Bộ điều khiển ngắt cứng trong máy tính PC AT 17

Hình 2.8 Mô hình hệ thống ngắt trong máy tính Pentium nhiều CPU 19

Hình 3.1 Mô hình máy tính 20

Hình 3.2 Định dạng 3 khuôn dạng lệnh của MIPS 23

Hình 3.3 Lưu đồ các bước thực thi mã lệnh 25

Hình 3.4 Đường dữ liệu trong thời gian tìm nạp lệnh 26

Hình 3.5 Đường dữ liệu trong thời gian giải mã lệnh 26

Hình 3.6 Đường dữ liệu trong thời gian thực thi lệnh dạng R 27

Hình 3.7 Đường dữ liệu trong thời gian thực thi lệnh lw và sw 28

Hình 3.8 Đường dữ liệu trong thời gian thực thi lệnh rẽ nhánh 29

Hình 3.9 Đường dữ liệu trong thời gian thực thi lệnh nhảy 29

Hình 3.10 Đường dữ liệu đơn chu kỳ 30

Hình 3.11 Sơ đồ khối đường dữ liệu đa chu kỳ 31

Hình 3.12 Sơ đồ phân phối clock cho đường dữ liệu đa chu kỳ 32

Hình 3.13 Hoạt động của đường dữ liệu trong thời gian tìm nạp lệnh 34

Hình 3.14 Hoạt động của đường dữ liệu trong thời gian giải mã lệnh 35

Hình 3.15 Hoạt động của đường dữ liệu trong thời gian thực thi lệnh lw và sw 36 Hình 3.16 Hoạt động của đường dữ liệu trong thời gian truy cập bộ nhớ (lệnh Lw) 37

Trang 8

Hình 3.17 Thực hiện máy trạng thái hữu hạn 38

Hình 3.18 Sơ đồ phần cứng của bộ xử lý dùng đường dữ liệu đa chu kỳ 40

Hình 3.19 Sơ đồ máy trạng thái cho bộ xử lý sử dụng đường dữ liệu đa chu kỳ 41

Hình 3.20 Sơ đồ phần cứng CPU RISC đa chu kỳ 42

Hình 3.21 Mô hình tập thanh ghi 43

Hình 3.22 Mô hình đơn vị ALU 44

Hình 3.23 Mô hình đơn vị điều khiển ALU 44

Hình 3.24 Mô hình đơn vị điều khiển MIPS 45

Hình 3.25 Mô hình bộ nhớ của MIPS 46

Hình 3.26 Mô hình các thanh ghi 47

Hình 3.27 Mô hình các bộ MUX 48

Hình 3.28 Kết quả mô phỏng các lệnh cơ bản của MIPS 48

Hình 4.1 Tập thanh ghi đã sửa đổi 50

Hình 4.2 Phân vùng bộ nhớ 51

Hình 4.3 Lưu đồ quá trình điều khiển xử lý ngắt 52

Hình 4.4 Sơ đồ phần cứng sau khi đã sửa đổi 53

HÌnh 4.5 Sơ đồ máy trạng thái sau khi đã sửa đổi 54

Hình 4.6 Kết quả mô phỏngbộ xử lý trung tâm đáp ứng ngắt 55

Hình 4.7 Sơ đồ khối đơn vị điều khiển ngắt 57

Hình 4.8 Kết quả mô phỏng việc test đáp ứng đơn vị điều khiển ngắt 58

Hình 4.9 Kết quả mô phỏng quá trình vào phục vụ ngắt của CPU RISC 59

Trang 9

DANH MỤC BẢNG

Bảng 2.1 Các vector ngắt của họ vi điều khiển 8051 7

Bảng 2.2 Các chế độ hoạt động của ARM 9

Bảng 2.3 Bảng kết hợp các ngoại lệ với các chế độ làm việc của ARM 11

Bảng 2.4 Bảng vector ngoại lệ của ARM 12

Bảng 2.5 Bảng thứ tự ưu tiên của các ngoại lệ trong bộ xử lý ARM 13

Bảng 2.6 Các vector ngắt cừng trong máy tính PC AT 17

Bảng 3.1 Tâp lệnh cơ bản của MIPS 22

Bảng 3.2 Bảng giá trị các ngõ ra điều khiển đường dữ liệu 39

Bảng 3.3 Bảng giá trị của trạng thái kế 39

Trang 10

DANH MỤC TỪ VIẾT TẮT

ACK Acknowledgement

ALU Arithmetic logic unit

APIC Advanced Programmable Interrupt Controller

ARM Acorn RISC Machine

CPSR Current Program Status Register

CPU Central Processing Unit

DMA Direct Memory Access

EOI End Of Interrupt

EPC Exception Program Counter

FIQ Fast Interrupt Request

I/O Input/Output

IMR Interrupt Mark Register

INTC Interrupt Controller

INTR Interrupt

MDR Memory Data Register

MIPS Microprocessor without Interlocked Pipeline Stages

RISC Reduced Instructions Set Computer

SPSR Saved Program Status Register

VHDL VHSIC hardware description language

VHSIC Very-high-speed integrated circuits

Trang 11

Chương 1 TỔNG QUAN VỀ CẤU TRÚC NGẮT TRONG BỘ VI XỬ LÝ

I KHÁI NIỆM VÀ VAI TRÒ CỦA NGẮT TRONG BỘ VI XỬ LÝ

Bộ xử lý luôn được coi là trái tim của một hệ thống nhưng nếu chỉ có một

bộ xử lý không thì cũng sẽ không thể hoạt động được Mọi bộ xử lý đều phải kết hợp với rất nhiều các thiết bị bên ngoài được gọi là các thiết bị I/O (Input/Output) nhầm tạo ra sự tương tác trao đổi giữa bộ xử lý và thế giới bên ngoài

Hình 1.1 Sơ đồ khối một bộ xử lý

Bộ xử lý thường điều khiển các thiết bị I/O bằng cách ánh xạ bộ nhớ Một

số không gian của vùng nhớ cao được dùng để ánh xạ đến các thiết bị I/O Việc ghi dữ liệu đến hoặc đọc dữ liệu từ vùng nhớ này tương đương với việc ghi hoặc đọc dữ liệu từ thiết bị I/O tương ứng

Ngược lại, để các thiết bị I/O truyền thông với bộ xử lý có thể dùng một trong hai phương pháp là phương pháp hỏi vòng và phương pháp kích ngắt

Phương pháp hỏi vòng, bộ xử lý sẻ hỏi vòng tất cả các thiết bị I/O theo

chu kỳ để xác định nhu cầu được phục vụ của các thiết bị này Phương pháp này có ưu điểm là bộ xử lý nắm quyền chủ động nhưng đó cũng chính là nhược điểm của phương pháp này vì lúc đó bộ xử lý phải làm tất cả mọi việc

Bộ đếm chương trình (PC)

Thanh ghi lệnh (IR)

Đơn vị Giải mã lệnh và Điều khiển

Đơn vị

Số học và Logic (ALU)

Tập thanh ghi

CPU

Trang 12

Hơn nữa với phương pháp này, tốc độ truy xuất dữ liệu phụ thuộc vào tốc

độ của ngoại vi Hiệu suất hoạt động của hệ thống rất thấp, nhất là khi hệ thống

có nhiều thiết bị I/O tốc độ chậm Thời gian dành cho việc lặp vòng và chờ sẽ

lớn, số lượng thiết bị I/O lớn và chênh lệch lớn về tốc độ thì phải tiêu tốn rất

nhiều thời gian

Phương pháp lập trình này dễ làm thất thoát dữ liệu đối với các thiết bị

không đồng bộ hoặc cần đáp ứng nhanh Lập trình hỏi vòng sẽ không đáp ứng

kịp

CPU

Bus hệ thống

I/O (1) I/O (2) I/O (n)

Hình 1.3 Điều khiển ngoại vi bằng phương pháp hỏi vòng

Bus địa chỉ

CPU

Thiết bị ngoại vi

Mạch giao tiếp ngoại vi

Bus dữ liệu

Bus điều khiển

Hình 1.2 Sơ đồ khối một hệ vi xử lý đơn giản

Trang 13

Phương pháp kích ngắt, khi cần được phục vụ, thiết bị I/O tạo ra một

ngắt yêu cầu bộ xử lý phục vụ Ngắt là sự xảy ra của một điều kiện – một sự

kiện – làm cho chương trình hiện hành bị tạm ngừng trong khi điều kiện được

phục vụ bởi một chương trình xử lý ngắt Chương trình xử lý một ngắt được gọi

là chương trình phục vụ ngắt ISR (Interrupt Service Routine) hay quản lý ngắt

(Interrupt Handler) ISR được thực thi nhằm đáp ứng một ngắt và trong trường

hợp tổng quát thực hiện việc xuất nhập đối với một thiết bị Khi một ngắt xuất

hiện, việc thực thi chương trình tạm thời bị dừng và CPU thực hiện việc rẽ

nhánh đến trình phục vụ ngắt ISR CPU thực thi ISR để thực hiện một công

việc và kết thúc thực thi này khi gặp lệnh quay về Chương trình chính được

tiếp tục tại nơi bị dừng Ta có thể nói chương trình chính được thực thi ở mức

nền còn ISR được thực thi ở mức ngắt

Các ngắt đóng vai trò quan trọng trong việc thiết kế và hiện thực các ứng

dụng của bộ xử lý Ngắt xảy ra một cách ngẫu nhiên trong quá trình thực thi

chương trình, đáp ứng cho một tín hiệu phần cứng Ngắt không đồng bộ với

việc thực thi chương trình, do đó có thể được xử lý giữa các lệnh, đơn thuần là

hoãn và tiếp tục thực thi chương trình của người sử dụng Ngoài ra, trong một

số bộ xử lý, phần mềm có thể tạo ra các ngắt bằng cách thực thi một lệnh

Khi một ngắt xảy ra và được CPU chấp nhận, chương trình chính bị dừng

(bị ngắt) Các hoạt động sau đây xảy ra:

 Lệnh hiện hành được thực thi hoàn tất

 PC được lưu vào stack

 Trạng thái ngắt hiện hành được lưu

 Các ngắt bị chặn ở mức ngắt này

CPU

Bus hệ thống

I/O (1) I/O (2) I/O (n)

Hình 1.4 Điều khiển ngoại vi bằng phương pháp kích ngắt

Trang 14

 PC được nạp địa chỉ vector của ISR (trình phục vụ ngắt: interrupt service routine)

 ISR được thực thi

 ISR được kết thúc bằng RETI (quay về từ trình phục vụ ngắt) Lệnh này

sẽ khôi phục lại giá trị cũ của PC từ stack và khôi phục trạng thái ngắt

cũ Việc thực thi chương trình chính tiếp tục từ nơi mà chương trình này rời khỏi

II ĐIỀU KHIỂN NGẮT TRONG BỘ VI XỬ LÝ

Khi có nhiều ngoại vi có khả năng yêu cầu ngắt, CPU phải có nhiều chân nhận tín hiệu yêu cầu ngắt vậy nếu có N ngoại vi – port I/O thì sao?

Khi có nhiều ngoại vi yêu cầu ngắt cùng một lúc thì CPU giải quyết ra sao?

Khi CPU đang chạy một ISR của một ngoại vi nào đó, nếu có một ngoại vi khác yêu cầu ngắt thì CPU giải quyết ra sao?

Tín hiệu yêu cầu ngắt có thể chọn là tín hiệu mức hoặc tín hiệu cạnh không?

Nếu một yêu cầu ngắt chưa được chấp nhận, yêu cầu ngắt này có được ghi nhận không hay phải yêu cầu lại?

Để giải quyết các vấn đề trên, người ta có khuynh hướng thiết kế phần cứng xử lý ngắt hay điều khiển ngắt gọi là bộ điều khiển ngắt INTC (interrupt controller)

CPU chỉ cần có một chân (thí dụ chân INTR) nhận tín hiệu yêu cầu ngắt từ INTC INTC nhận các tín hiệu yêu cầu ngắt của các ngoại vi, giải quyết vấn đề

a Thực thi chương trình không có ngắt

b Thực thi chương trình có ngắt xảy ra Hình 1.5 Minh họa việc thực thi chương trình có và không có ngắt xảy ra

Trang 15

đăng ký ngắt, vấn đề ưu tiên, vấn đề ghi nhận ngắt chờ phục vụ sau mà không cần yêu cầu ngắt lại, vấn đề tín hiệu ngắt là mức hay cạnh, vấn đề cho phép ngắt hay cấm ngắt

INTC sẽ thông báo với CPU ngoại vi nào CPU cần phục vụ (nghĩa là CPU

sẽ chạy ISR nào), thường INTC cung cấp mã nhận dạng ngoại vi đến CPU qua bus dữ liệu

CPU

Bus hệ thống

I/O (1) I/O (2) I/O (n)

Hình 1.6 Điều khiển ngoại vi bằng phương pháp kích ngắt có bộ điều khiển ngắt

INTC

INTR

Trang 16

Chương 2 NGHIÊN CỨU MỘT VÀI CẤU TRÚC NGẮT

I CẤU TRÚC NGẮT TRONG HỌ VI ĐIỀU KHIỂN

Họ vi điều khiển 8051 dùng một bộ điều khiển ngắt để giải quyết vấn đề

đăng ký ngắt, vấn đề ưu tiên, vấn đề ghi nhận ngắt chờ phục vụ sau mà không

cần yêu cầu ngắt lại, vấn đề tín hiệu ngắt là mức hay cạnh, vấn đề cho phép

ngắt hay cấm ngắt

Hình 2.1 Sơ đồ khối họ vi điều khiển 8051

Trang 17

Hình 2.2 Sơ đồ khối khối điều khiển ngắt của họ vi điều khiển 8051

Bảng 2.1 Các vector ngắt của họ vi điều khiển 8051

Trang 18

II CẤU TRÚC NGẮT TRONG HỌ VI ĐIỀU KHIỂN PIC16

Họ vi điều khiển PIC16 chỉ tồn tại một vector ngắt, tất cả các nguyên nhân ngắt xảy ra điều đưa chương trình nhảy đến vector ngắt đó (0004H) Trong trường hợp có nhiều ngắt xảy ra đồng thời hoặc ngắt xảy ra trong quá trình phục vụ ngắt khác thì việc quyết định thực hiện ngắt nào hoàn toàn do người lập trình quyết định

Hình 2.3 Mô hình điều khiển ngắt trong vi điều khiển PIC16C84

Hình 2.4 Mô hình điều khiển ngắt trong vi điều khiển PIC16F887

Trang 19

III CẤU TRÚC NGẮT TRONG ARM

1 Giới thiệu

a.Các chế độ hoạt động của ARM

Bộ xử lý ARM thông thường có 7 chế độ hoạt động khác nhau, bao gồm:

 Chế độ User (User mode): chế độ này được sử dụng trong trạng thái thực thi chương trình bình thường;

 Chế độ FIQ (FIQ mode): chế độ này được sử dụng để đáp ứng nhanh và độ trễ đáp ứng thấp các yêu cầu ngắt nhanh, ví dụ như trong trường hợp truyền dữ liệu bằng phương thức DMA;

 Chế độ IRQ (IRQ mode): chế độ này được sử dụng để phục vụ các ngắt thông thường;

 Chế độ Supervisor (Supervisor mode): chế độ này được sử dụng khi đang trong quá trình hoạt động hệ thống hỗ trợ được cần đến khi chúng hoạt động giống như chế độ bảo vệ;

 Chế độ Abort (Abort mode) chế độ này được chọn khi dữ liệu hoặc lệnh tìm nạp được bỏ qua;

 Chế độ hệ thống (System mode): Chế độ dành riêng cho hoạt động của hệ thống;

 Chế độ không được định nghĩa (Undefined mode): khi lệnh không được định nghĩa được tìm nạp

Sau đây là bảng tổng kết 7 chế độ hoạt động:

Chế độ của bộ xử lý Mô tả

User (usr) Chế độ thực thi chương trình bình thường

Supervisor(svc) Một chế độ được bảo vệ cho hoạt động của hệ thống

Abort (abt) Khi dữ liệu hoặc lệnh tìm nạp bị bỏ qua

Undefined (und) Dùng cho các lệnh không được định nghĩa

System (sys) Chế độ dành riêng cho hoạt động của hệ thống

Bảng 2.2 Các chế độ hoạt động của ARM

Trang 20

b Tập thanh ghi ARM

Cấu trúc thanh ghi trong ARM phụ thuộc vào chế độ hoạt động Ví dụ,

chúng ta có 16 thanh ghi (32 bit) được đặt tên từ R0 đến R15 trong chế độ

usr

Các thanh ghi R0 đến R12 là các thanh ghi đa dụng, R13 là thanh ghi

con trỏ ngăn xếp (SP), R14 là thanh ghi liên kết (LR) và thanh ghi R15 là thanh ghi chương trình (PC), R16 là thanh ghi trạng thái chương trình hiện tại (CPSR) thanh ghi này được chia sẽ giữa tất cả các chế độ và nó được sử

dụng bởi nhân ARM ở mọi lúc và nó đóng vai trò chính trong việc xử lý chuyển đổi giữa các chế độ

Trong một vài chế độ 16 thanh ghi này được nhìn thấy và có thể truy xuất được và trong một số khác thì lại không nhìn thấy và không truy xuất được Ngoài ra, có một số thanh ghi hiện hữu với cùng tên nhưng có địa chỉ

vật lý khác nhau trong bộ nhớ được gọi là banked Sự tồn tại các banked

thanh ghi làm giảm đi sự cố gắng cần thiết khi việc chuyển ngữ cảnh được yêu cầu, bởi vì chế độ mới đã có không gian thanh ghi vật lý riêng của nó và không cần lưu trữ các giá trị thanh ghi cũ của chế độ trước đó

Vì thế trong ARM7 chúng ta có tổng cộng 37 thanh ghi và sau đây là hình minh hoạ tập thanh ghi của ARM7

Hình 2.5 Tập thanh ghi của ARM 7

Trang 21

Như chúng ta thấy các thanh ghi banked được đánh dấu bởi màu xám

Chúng ta chú ý rằng chế độ FIQ có nhiều thanh ghi banked nhất, điều này

làm tăng tốc việc chuyển ngữ cảnh bởi vì sẽ không cần thiết để chứa nhiều

thanh ghi khi chuyển đến chế độ FIQ Chúng ta có thể chỉ cần chứa các giá

trị của các thanh ghi từ R0 đến R7 nếu trình điều khiển FIQ cần sử dụng các

thanh ghi này còn các thanh ghi r8_fiq đến r14_fiq là các thanh thi dành

riêng cho chế độ FIQ và không thể truy cập được bởỉ bất kỳ chế độ nào khác

( bởi vì nó trở thành ẩn trong các mode khác)

2 Các ngoại lệ của ARM

Một ngoại lệ là một điều kiện bất kỳ cần phải dừng việc thực thi lệnh bình

thường lại Một ví dụ của các ngoại lệ là trạng thái reset nhân ARM, lỗi trong

việc tìm nạp lệnh hoặc truy cập bộ nhớ, khi một ngắt ngoài được tăng lên hoặc

khi một lệnh ngắt mềm được thực thi Luôn luôn có phần mềm kết hợp với mỗi

ngoại lệ, phần mềm này được gọi là trình điều khiển ngoại lệ Mỗi ngoại lệ của

ARM sẽ gây ra cho lõi ARM đi vào một chế độ nhất định một cách tự động

Ngoài ra, chúng ta có thể chuyển giữa các chế độ khác nhau một cách nhân

công bằng cách hiệu chỉnh thanh ghi CPSR Bảng sau tổng kết các ngoại lệ

khác nhau và sự kết hợp các chế độ của hoạt động trong bộ xử lý ARM

Ngoại lệ Chế độ

Yêu cầu ngắt IRQ

Đây là bảng chỉ dẫn để lõi ARM rẽ nhánh khi một ngoại lệ xảy ra

Những chỉ dẫn này được đặt trong một phần đặt biệt trong bộ nhớ và địa chỉ

của nó được liên kết đến các loại ngoại lệ Nó luôn chứa một lệnh rẽ nhánh

một trong các dạng sau:

 B<Add>

Lệnh này được sử dụng để rẽ nhánh đến vị trí bộ nhớ với địa chỉ

“Add” so với địa chỉ hiện tại của pc

Trang 22

 MOV pc, #immediate Tải vào thanh ghi chương trình giá trị ”immediate”

Địa chỉ Ngoại lệ Chế độ vào

Bảng 2.4 Bảng vector ngoại lệ của ARM

Chúng ta có thể chú ý trong bảng vector này trình điều khiển ngoại lệ FIQ được đặt ở cuối của bảng vector, vì thế không cần lệnh rẽ nhánh ở đó;

chúng ta có thể đặt trình điều khiển ngoại lệ trực tiếp ở đây vì thế sẽ bắt đầu

nhanh hơn bằng cách bỏ qua thời gian để rẽ nhánh

Trang 23

b Thứ tự ưu tiên của ngoại lệ

Bởi vì các ngoại lệ có thể xảy ra đồng thời vì thế chúng ta có thể có nhiều hơn một ngoại lệ xảy ra tại một thời điểm, bộ điều khiển phải có sự ưu

tiên cho mỗi ngoại lệ để nó có thể quyết định ngoại lệ nào là quan trong

hơn Sau đây là bảng chỉ ra các ngoại lệ khác nhau có thể xảy ra trong ARM

và độ ưu tiên của chúng:

Bảng 2.5 Bảng thứ tự ưu tiên của các ngoại lệ trong bộ xử lý ARM

Chúng ta nên chú ý đến sự khác nhau về độ ưu tiên của các ngoại lệ (khi nhiều ngoại lệ cùng hợp lệ tại cùng một thời điểm) và mã của trình điều

khiển ngoại lệ thực sự Các trình điều khiển ngoại lệ, chính bản thân chúng

cũng có thể bị ngắt bởi các trình điều khiển ngoại lệ khác, và vì thế chúng ta

có 2 bit gọi là bit I và bit F Bit F xác định các ngoại lệ đó có thể được xếp

hàng hay không, khi bit này là 1 thì sẽ không có ngoại lệ nào được phép xảy

ra nữa Và bit I cũng tương tự nhưng đối với các ngoại lệ IRQ Các lệnh

không được định nghĩa và các ngắt phần mềm (SWI) không thể xảy ra đồng

thời bởi vì chúng đều được gây ra bởi một lệnh đi vào tầng thực thi của

đường ống lệnh của ARM, vì thế chúng tự loại trừ lẫn nhau và vì thế chúng

có cùng độ ưu tiên

c Vào và thoát khỏi một trình điều khiển ngoại lệ

Sau đây là các bước để bộ xử lý ARM điều khiển một ngoại lệ

 Ép buộc thanh ghi PC nạp lệnh kế từ bảng vector ngoại lệ

 Bây giờ khi trình điều khiển đang chạy trong chế độ tương ứng với ngoại lệ xãy ra

Trang 24

 Khi trình điều khiển thực hiện xong, thanh ghi CPSR được phục hồi từ giá trị được lưu trong thanh ghi SPSR

 Thanh ghi PC được cập nhật với giá trị của (LR- offset) và giá trị offset phụ thuốc vào loại ngoại lệ

Và khi quyết định ra khỏi trình điều khiển ngoại lệ thì các bước sau xãy ra:

 Di chuyển thanh ghi liên kết LR( trừ đi một offset) vào thanh ghi PC;

 Sao chép thanh ghi SPSR ngược vào thanh ghi CPSR, điều này sẽ thay đổi lại chế độ trước đó một cách tự động

 Xoá cờ cấm ngắt (nếu nó đang được set)

3 Các ngắt của ARM

Có hai loại ngắt có giá trị trong bộ xử lý ARM Loại thứ nhất là ngắt gây

ra bởi các sự kiện bên ngoài từ các phần cứng ngoại vi và loại thứ hai là các lệnh ngắt từ phần mềm (SWI)

Lõi ARM chỉ có một chân FIQ, đó là tại sao một bộ điều khiển ngắt ngoài luôn được sử dụng để hệ thống có thể có nhiều hơn một nguồn ngắt, độ ưu tiên của các ngắt này do bộ điều khiển ngắt ngoài quyết định và khi ngắt FIQ xãy ra

và trình điều khiển nhận diện một trong các ngắt ngoại và sẽ xử lý nó

b Ngoại lệ IRQ và FIQ

Cả hai ngoại lệ xãy ra khi mặc nạ ngắt trong trong thanh ghi đặc biệt CPSR bị xoá Bộ xử lý ARM sẽ tiếp tục thực thi lệnh hiện tại trong đường ống trước khi điều khiển ngắt Phần cứng bộ điều khiển sẽ đi qua các thủ tục chuẩn sau:

Trang 25

 Bộ điều khiển sẽ chuyển đến một chế độ đặc biệt phụ thuộc vào ngắt nhận được

 Thanh ghi CPSR của chế độ trước đó được lưu vào thanh ghi SPSR của chế độ mới

 Thanh ghi PC được lưu trong thanh ghi LR của chế độ mới

 Các ngắt bị cấm chỉ riêng IRQ hoặc cả IRQ lẫn FIQ

 Bộ xử lý rẽ nhánh đến một ngõ vào nhất định trong bảng vector

Cho phép hoặc không cho phép các ngoại lệ FIQ và IRQ được thực hiện theo 3 bước Đầu tiên tải nội dung của thanh ghi CPSR sau đó thiết lập

hoặc xoá các bit mặc nạ theo yêu cầu, tiếp theo là sao chép phần nội dung đã

chỉnh sửa trở lại thanh thi CPSR

IV CẤU TRÚC NGẮT TRONG MÁY TÍNH

1 Cấu trúc ngắt trong máy tính PC AT

Hình 2.6 Mô hình phân vùng bộ nhớ RAM động trong máy tính PC AT

Vùng 1 KB (1024 byte) được chia thành 256 ô nhớ, mỗi ô nhớ chiếm 4 byte gọi là vector ngắt  ta có bảng vector ngắt

Nội dung mỗi ô nhớ là địa chỉ của ISR hoặc trỏ đến một bảng nhảy phụ, mỗi vector của bảng nhảy này chứa địa chỉ của ISR hoặc trỏ đến bảng nhảy phụ

thứ hai

256 vector ngắt của bảng vector ngắt được đánh số từ 00H đến FFH

Các ngắt cứng chiếm những vector ngắt từ 08H đến 0FH và từ 70H đến 77H sử dụng 2 bộ điều khiển ngắt INTC8259A được cấu hình như hình 2.7

Còn lại là trình xử lý ngoại lệ, trình xử lý ngắt mềm (gọi bằng lệnh INT xxH) của BIOS và DOS

Vùng 1 MB

Bộ nhớ RAM động

Thấp

16 segmentnhớ mỗi segment

64 KB (đánh

Segment 0Vùng nhớ 1 MB

Vùng 1 KB Segment 0

> 1 MB

Trang 26

IR8IR9IR10 IR11 IR12 IR13 IR14 IR15

INT

INTINTA

INTA

INTA

CPU

Các thiết bị ngoại vi – I/O port

CAS0-2

CAS0-2

Mã 8-bit của chủ00001xxx: trong đó xxx = 000  111 Vậy mã 8-bit là: 08H  0FH Chuû

Mã 8-bit của tớ01110xxx: trong đó xxx = 000  111 Vậy mã 8-bit là: 70H  77H

Hinh 2.7 Bộ điều khiển ngắt cứng trong máy tính PC AT

Bảng 2.6 Các vector ngắt cừng trong máy tính PC AT

Trang 27

2 Cấu trúc ngắt trong máy tính PC Pentium

Các ngắt và các ngoại lệ sẽ buộc chuyển việc thực thi chương trình hoặc tác vụ hiện đang chạy đến thủ tục hoặc tác vụ đặc biệt gọi là trình xử lý

Các ngắt thường xảy ra ở những thời điểm ngẫu nhiên trong thời gian thực thi chương trình, đáp ứng các tín hiệu từ phần cứng Các ngắt được sử dụng để xử lý những sự kiện bên ngoài đến CPU, chẳng hạn yêu cầu phục vụ thiết bị ngoại vi

Phần mềm cũng có thể tạo ra ngắt bằng cách thực thi lệnh INT xxH Các ngoại lệ xảy ra khi CPU phát hiện điều kiện lỗi lúc thực thi lệnh, chẳng hạn như chia cho 0

CPU phát hiện nhiều điều kiện lỗi bao gồm vi phạm bảo vệ, lỗi trang, lỗi máy bên trong

Kiến trúc kiểm tra máy của Pentium còn cho phép các ngoại lệ kiểm tra máy được tạo ra khi có lỗi phần cứng bên trong và lỗi bus được phát hiện

Các nguyên nhân ngắt: các ngắt ngoài (được tạo ra bởi phần cứng)  còn gọi là ngắt cứng

Các ngắt tạo ra do phần mềm  còn gọi là ngắt mềm

Các ngắt ngoài được nhận thông qua các chân trên CPU hoặc thông qua bus nối tiếp cục bộ APIC Các chân ngắt trên Pentium là LINT[1:0], được nối với APIC cục bộ Khi APIC không được phép, các chân này được cấu hình thành INTR# và NMI# Việc xác lập chân INTR# báo cho CPU biết ngắt ngoài xảy ra và CPU đọc từ bus hệ thống con số của vector ngắt do bộ điều khiển ngắt ngoài (như là 8259A) cung cấp

Việc xác lập chân NMI# báo hiệu cho CPU ngắt không che được

Khi APIC cục bộ được phép, các chân LINT[1:0] có thể được lập trình thông qua bảng vector của APIC để được kết hợp với các vector ngắt hoặc ngoại lệ của CPU

APIC cục bộ của CPU có thể được nối với APIC I/O dựa trên hệ thống

Ở đây, các ngắt ngoài được nhận ở các chân của APIC I/O có thể được định hướng đến APIC cục bộ thông qua bus nối tiếp APIC (các chân PICD[1:0]) APIC I/O xác định con số vector của ngắt và truyền số này đến APIC cục bộ, Khi hệ thống chứa nhiều bộ xử lý, các bộ xử lý cũng có thể truyền các ngắt đến

bộ xử lý khác thông qua bus nối tiếp APIC

Các CPU Intel 486 và Pentium đời trước không có APIC cục bộ trên chip CPU  hoạt động như máy tính PC AT

Một ngắt ngoài bất kỳ được phân phối đến CPU thông qua chân INTR# hoặc thông qua APIC cục bộ được gọi là ngắt cứng che được

Trang 28

Các ngắt cứng che được có thể được phân phối thông qua chân INTR# bao gồm mọi vector ngắt được định nghĩa bởi kiến trúc Intel từ 0 đến 255 (00H đến FFH)

Các ngắt cứng che được có thể được phân phối thông qua APIC cục bộ bao gồm các vector ngắt từ 16 đến 255 (10H đến FFH)

Lệnh INT xxH cho phép các ngắt được tạo ra từ bên trong phần mềm bằng cách cung cấp con số vector ngắt làm toán hạng Các ngắt mềm không thể được lập mặt nạ

Nguyên nhân của các ngoại lệ: lỗi chương trình do CPU phát hiện, được tạo ra bởi phần mềm, kiểm tra máy

APIC cục bộ có hai nhiệm vụ chính:

- Xử lý các ngắt ngoài cục bộ và các ngắt bên trong cục bộ do phần mềm tạo ra

- Trong hệ thống đa xử lý, truyền thông với chip APIC I/O bên ngoài APIC I/O bên ngoài nhận các sự kiện ngắt bên ngoài từ hệ thống

và các ngắt liên bộ xử lý (CPU) từ các bộ xử lý trên bus hệ thống và phân phối chúng đến các bộ xử lý trên bus hệ thống APIC I/O là một phần của chipset hệ thống của Intel

Các nguyên nhân ngắt của APIC cục bộ: từ thiết bị I/O bên ngoài nối với các chân ngắt cục bộ, thông điệp bus từ APIC I/O, thông điệp bus từ APIC cục

bộ của các bộ xử lý khác, các cơ chế phần cứng và phần mềm của APIC cục bộ

Hình 2.8 Mô hình hệ thống ngắt trong máy tính Pentium nhiều CPU

Trang 29

V KẾT LUẬN

Từ một số trúc ngắt đã tìm hiểu như trên chúng ta có thể rút ra một kết luận là

có một xu hướng thiết kế CPU có ngắt là thiết kết một bộ xử lý đáp ứng được một ngõ vào ngắt kết hợp với việc thiết kế một bộ điều khiển ngắt để xử lý các vấn đề còn lại như đăng ký ngắt, xử lý ưu tiên,…

Vì thế phần tiếp theo của quyển luận văn này sẽ đi sâu vào tìm hiều và thiết kế một bộ xử lý Bước tiếp theo là phát triển bộ xử lý này để đáp ứng được yêu cầu ngắt và đồng thời sẽ thiết kế một đơn vị điều khiển ngắt để kết hợp với bộ xử lý để tạo thành một CPU hoàn chỉnh đáp ứng được ngắt

Trang 30

Chương 3

THIẾT KẾ CPU RISC

I TỔNG QUAN VỀ MÁY TÍNH

Một máy tính có thể được chia thành 5 phần:

1 Các thiết bị nhập (input devices) mang dữ liệu từ thế giới bên ngoài vào trong máy tính

2 Dữ liệu này được giữ trong bộ nhớ của máy tính cho đến khi

3 Đường dữ liệu (datapath) yêu cầu và xử lý chúng

4 Hoạt động của đường dữ liệu được điều khiển bởi bộ điều khiển

(controller) của máy tính

Toàn bộ công việc được thực hiện bởi máy tính sẽ không mang lại lợi ích gì cho ta trừ khi ta đưa dữ liệu trở ra thế giới bên ngoài

5 Đưa dữ liệu trở ra thế giới bên ngoài là công việc của các thiết bị xuất (output devices)

5 phần trên có thể được phân lại thành các đơn vị như hình 3.1

Thiết bị nhập Thiết bị xuất

Trang 31

- Liên kết nối các đơn vị chức năng sao cho lệnh có thể được thực thi theo yêu

cầu

- Nạp dữ liệu từ bộ nhớ và lưu dữ liệu vào bộ nhớ

Quá trình hoạt động của một bộ vi xử lý như sau:

i Đầu tiên, các thiết bị nhập mang mã đối tượng và dữ liệu đầu vào từ thế giới

bên ngoài vào trong hệ vi xử lý thông qua thiết bị nhập Input

ii Tiếp theo, các mã đối tượng và dữ liệu này được lưu giữ trong bộ nhớ

iii Khi bộ xử lý yêu cầu và xử lý chúng

- Bộ xử lý tìm nạp lệnh từ bộ nhớ

- Đơn vị điều khiển của bộ xử lý sẽ giải mã lệnh để biết cần bảo đường dữ liệu

thực hiện điều gì

- Đường dữ liệu thực thi lệnh dưới sự hướng dẫn của đơn vị điều khiển

iv Vào lúc hoàn tất chương trình, dữ liệu xuất được lưu vào trong bộ nhớ

v Thiết bị xuất “xuất” dữ liệu trong bộ nhớ ra môi trường bên ngoài

Bảng tóm tắt các lệnh cơ bản của MIPS như sau:

logical

0 & 00 sll $s1, $s2, 4 $s1 = $s2 << 4

shift right logical 0 & 02 srl $s1, $s2, 4 $s1 = $s2 >> 4 (fill with zeros) shift right

arithmetic 0 & 03 sra $s1, $s2, 4 $s1 = $s2 >> 4 (fill with sign bit) and 0 & 24 and $s1, $s2, $s3 $s1 = $s2 & $s3

Trang 32

or 0 & 25 or $s1, $s2, $s3 $s1 = $s2 | $s3 nor 0 & 27 nor $s1, $s2, $s3 $s1 = not ($s2 | $s3) and immediate c andi $s1, $s2,

5 bne $s1, $s2, L if ($s1 !=$s2) go to L

set on less than immediate

a slti $s1, $s2, 100 if ($s2<100) $s1=1;

else $s1=0

set on less than 0 & 2a slt $s1, $s2, $s3 if ($s2<$s3) $s1=1; else $s1=0 Uncond

jump jump jump register 0 & 08 jr $t1 2 j 2500 go to 10000 go to $t1

Bảng 3.1 Tâp lệnh cơ bản của MIPS

Ở đây CPU RISC-32 bit mà ta thiết kế chủ yếu thực hiện các lệnh: lw,

sw, beq, add, sub, and, or, j, và jr

Trang 33

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ớ mở rộng 32-bit

RISC có 3 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 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 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 gồm các lệnh nhảy

Chúng ta có 3 khuôn dạng lệnh

Hình 3.2 Định dạng 3 khuôn dạng lệnh của MIPS

 Các lệnh logic và số học (dạng R)

Trong đó:

OP : Opcode chỉ ra thao tác cần thực hiện

rs : địa chỉ của toán hàng nguồn register thứ nhất

rt : địa chỉ của toán hạng nguồn register thứ hai

rd : địa chỉ của toán hạng đích register destination

Shamt : Shift amount (dành cho các lệnh dịc bit)

funct : function, mã chọn biến thể cụ thể của thao tác được chỉ ra trong

Trang 34

 Các lệnh chuyển dữ liệu (dạng I)

Trong đó:

OP : Opcode chỉ ra thao tác cần thực hiện

rs : địa chỉ của toán hàng nguồn register thứ nhất

rt : địa chỉ của toán hạng nguồn register thứ hai

Offset : giá trị 16 bit

 Các lệnh rẽ nhánh (dạng J)

Trong đó:

OP : Opcode chỉ ra thao tác cần thực hiện

3 Các chế độ định địa chỉ:

Định địa chỉ thanh ghi: operand ở trong thanh ghi

Đị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

Trang 35

Đị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

III ĐƯỜNG DỮ LIỆU ĐƠN CHU KỲ

Như đã khảo sát ở trên, ta thấy để một mã lệnh được thực hiện phải trải qua các

giai đoạn : Tìm nạp, giải mã và thực thi lệnh

1 Tìm nạp lệnh

Việc tìm nạp lệnh bao gồm : Tìm nạp một mã lệnh từ bộ nhớ lệnh và cập nhật giá trị thanh ghi bộ đếm chương trình (PC : Program Counter) để chỉ đến lệnh kế

Ở đây chúng ta thấy, thanh ghi PC được cập nhật sau mỗi chu kỳ clock nên chúng ta không cần phải có tín hiệu điều khiển ghi Tương tự với thanh ghi PC, bộ nhớ lệnh cũng được truy xuất sau mỗi chu kỳ nên cũng không cần tín hiệu điều khiển đọc rõ ràng

Trang 36

2 Giải mã lệnh

Việc giải mã lệnh bao gồm :

- 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

- Do chưa tại thời điểm này lệnh chưa được giải mã nên chưa biết đây là lệnh

gì nên chúng ta phải đọc hai giá trị từ tập thanh ghi dựa vào các địa chỉ được chứa trong lệnh để dự phòng khi cần dùng tới

Instruction

Write Data

Read Addr 1 Read Addr 2 Write Addr

Register File

Read Data 1

Read Data 2

Control Unit

Rs

Rt

Hình 3.5 Đường dữ liệu trong thời gian giải mã lệnh

Read Address Instruction

Instruction Memory Add

PC

4

Hình 3.4 Đường dữ liệu trong thời gian tìm nạp lệnh

Trang 37

3 Thực thi lệnh

a Thực thi dạng lệnh R

Thực hiện các thao tác Op và Funtc trên các giá trị trong Rs và Rt Sau đó ghi giá trị vào thanh ghi Rd

Lưu ý : Tập thanh ghi không được ghi mỗi chu kỳ vì thế mà chúng ta cần

phải có tín hiệu điều khiển ghi rõ ràng

b Thực thi dạng lệnh I

Thực thi lệnh LW và SW

Lệnh LW và SW 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 16 bit có dấu được

mở rộng dấu thành 32 bit có dấu

Với lệnh LW: Giá trị đọc được từ bộ nhớ dữ liệu sẽ được lưu vào tập thanh ghi

Reg[Rt] = MEM[Reg[Rs] + Sign-Extend(Offset)]

Với lệnh SW : Giá trị đọc được từ tập thanh ghi trong thời gian giải mã được ghi vào bộ nhớ dữ liệu

Register File

Read Data 1

Read Data 2

ALU overflow zero

Trang 38

MEM [Reg[Rs]+ Sign-Extend(Offset)] = Reg[Rt]

Lưu ý: Việc đọc/ghi ra/vào bộ nhớ dữ liệu chỉ được thực hiện trong khi thực hiện

lệnh LW/SW nên chúng ta cần phải có tín hiệu điều khiển đọc/ghi tõ ràng

Thực thi các lệnh rẽ nhánh

Trước tiê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ị rs and rt) (ngõ ra zero của ALU)

Kế đến phải 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

Instruction

Write Data

Read Addr 1Read Addr 2Write Addr

Register File

Read Data

Read Data

ALU

overflowzero

ALU RegWrite

Data Memory

Addres

Write

Read

Sign Extend

Trang 39

c Thực thi dạng lệnh J

Các lệnh nhảy phải 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

Hình 3.9 Đường dữ liệu trong thời gian thực thi lệnh nhảy

Instruction

Write Data

Read Addr 1 Read Addr 2 Write Addr

Register File

Read Data 1

Read Data 2

ALU

zero ALU

Sign Extend

16 32

Shift left 2

(to branch control logic)

Hình 3.8 Đường dữ liệu trong thời gian thực thi lệnh rẽ nhánh

Read Address Instruction

Instruction Memory Add

PC

4

Shift left 2

Jump address

26

4

28

Trang 40

dụ như bộ ALU và bộ nhớ ) Hơn nữa, việc dùng chung các thành phần đường dữ liệu giữa hai loại lệnh khác nhau sẽ cần các mạch ghép kênh ở ngõ vào của các thành phần dùng chung cùng với các đường điều khiển để thực hiện việc chọn lựa

Thời gian chu kỳ được xác định bởi chiều dài của đường dẫn dài nhất

Hình 3.10 Đường dữ liệu đơn chu kỳ

Mặc dù đường dữ liệu đơn chu kỳ rất đơn giản, dễ tiếp cận nhưng nó lại không được sử dụng vì nó rất chậm Các chu kỳ clock phải có cùng chiều dài cho tất cả các lệnh Chính điều này đã gây ra sự kém hiệu quả trong việc sử dụng chu kỳ clock Vì chu kỳ clock phải đủ dài để thực hiện được lệnh dài nhất, nên khi thực hiện các lệnh ngắn hơn sẽ gây ra sự lãng phí

Hơn nữa, do phải sao chép một số các đơn vị chức năng (ALU, Bộ nhớ,…) do trong cùng một chu kỳ một đơn vị chức năng không thể được dùng chung trong cùng một chu kỳ clock nên có thể gây lãng phí về mặt diện tích

Read

Address Instr[31-0]

Instruction Memory Add

PC

4

Write Data

Read Addr 1 Read Addr 2 Write Addr

Register File

Read Data 1

Read Data 2

ALU

ovf zero

RegWrite

Data Memory

16 32

MemtoReg ALUSrc

Shift left 2

Add

PCSrc

RegDst

ALU control

1

1 1

Control Unit

Ngày đăng: 04/04/2021, 00:38

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[3] Tống Văn On (2005). Nguyên lý mạch tích hợp: “ASIC lập trình được”, nhà xuất bản lao động xã hội Sách, tạp chí
Tiêu đề: ASIC lập trình được
Tác giả: Tống Văn On
Nhà XB: nhà xuất bản lao động xã hội
Năm: 2005
[4] Tống Văn On “Giáo trình cấu trúc máy tính”, nhà xuất bản giáo dục năm 2000 Sách, tạp chí
Tiêu đề: Giáo trình cấu trúc máy tính
Nhà XB: nhà xuất bản giáo dục năm 2000
[10] University of Michigan, VLSI Design. http://www.eecs.umich.edu Link
[1] Tống Văn On (2007). Thiết kế mạch số với VHDL &amp; VERILOG, nhà xuất bản lao động xã hội Khác
[2] Tống Văn On (2007). Thiết kế vi mạch CMOS VLSI, nhà xuất bản phương đông Khác
[9] Neil H.E.Weste and David Harris, “CMOS VLSI Design: A Circuits and System Perspective, Third Edition, ISBN 0-321-14901-7 Khác

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