1. Trang chủ
  2. » Kỹ Thuật - Công Nghệ

THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH ADD (có code)

45 925 27

Đ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 45
Dung lượng 2,43 MB

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ế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH ADD (có code) THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH ADD (có code) THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH ADD (có code) THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH ADD (có code) THIẾT kế CPU RISC 32 BIT đơn CHU kỳ THỰC HIỆN LỆNH ADD (có code)

Trang 1

KỲ THỰC HIỆN LỆNH ADD

Trang 2

DANH MỤC CÁC HÌNH VẼ vi

DANH MỤC CÁC BẢNG BIỂU vii

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

CHƯƠNG 1 TỔNG QUAN VỀ CPU KIẾN TRÚC RISC 1

1.1 GIỚI THIỆU 1

1.1.1 Lịch sử 2

1.1.2 Lý thuyết về CPU RISC 6

1.1.2.1 Quy trình thiết kế số 6

1.1.2.2 Dẫn nhập thiết kế 8

1.1.2.3 Testbench trong Verilog 9

1.1.2.4 Mô phỏng 10

1.1.2.5 Kiến trúc CPU RISC 32 bit đơn chu kỳ 11

1.1.3Hướng nghiên cứu 14

1.2 NGUYÊN LÝ CHUNG 14

1.2.1 Nguyên tắc lưu dữ liệu trong bộ nhớ 14

CHƯƠNG 2: NỘI DUNG CỦA ĐÈ TÀI 17

2.1 ĐƯỜNG DỮ LIỆU CỦA LỆNH ADD 17

2.2 CONTROL UNIT 18

2.3 KHỐI RF 19

2.4 KHỐI ALU 20

CHƯƠNG 3: KẾT QUẢ MÔ PHỎNG 22

3.1 MÔ HÌNH MÔ PHỎNG 22

3.2 KẾT QUẢ MÔ PHỎNG 22

3.3 KẾT QUẢ NẠP TRÊN KIT DE2 23

CHƯƠNG 4: NHẬN XÉT 26

CHƯƠNG 5: KẾT LUẬN 27

PHỤ LỤC 29

Trang 3

HÌNH 1-1: CHIP VI XỬ LÝ ARM 1

HÌNH 1-2: LUỒNG THIẾT KẾ ASIC 8

HÌNH 1-3: HAI CÁCH KHÁC NHAU ĐẺ ĐỊNH NGHĨA DỮ LIỆU KIỂM TRA NGÕ VÀO 11

HÌNH 1-4: KIẾN TRÚC CPU RISC 32 BIT ĐƠN CHU KỲ 12

HÌNH 1-5: NGUYÊN TẮC ALIGNMENT RESTRICTION 15

HÌNH 2-1: ĐƯỜNG DỮ LIỆU LỆNH ADD 17

HÌNH 2-2: KHỐI CONTROL UNIT 18

HÌNH 2-3: KHỐI REGISTER FILE 19

HÌNH 2-4: KHỐI ALU 32 BIT 20

HÌNH 2-5: NGUYÊN TẮC THỰC HIỆN PHÉP CỘNG 32 BIT 21

HÌNH 3-1: SƠ ĐỒ MÔ PHỎNG CPU RISC 22

HÌNH 3-2: MÔ PHỎNG DẠNG SÓNG BẰNG PHẦN MỀM QUARTUS 22

HÌNH 3-3:SƠ ĐỒ ĐẤU CHÂN 23

HÌNH 3-4: KẾT QUẢ NẠP KIT 1 24

HÌNH 3-5: KẾT QUẢ NẠP KIT 2 25

Trang 4

BẢNG 1-1: SO SÁNH CPU RISC VỚI CÁC CPU KHÁC 1

BẢNG 1-2: CÁC HỆ THỐNG VÀ CÁC RISC PHỔ BIẾN 6

BẲNG 1-3: THANH GHI TRONG CPU RISC 14

BẢNG 1-4: CẤU TRÚC LỆNH 16

BẢNG 2-1: KHỐI CONTROL UNIT LOẠI R 18

BẢNG 2-2: BẢNG SỰ THẬT FULL ADDER 20

Trang 5

RF Register File

ALU Arithmetic logic unit

CPU Central Processing Unit

RTL Register Transfer Language

Trang 6

CHƯƠNG 1 TỔNG QUAN VỀ CPU KIẾN TRÚC RISC

1.1 Giới thiệu

RISC (Reduced Instructions Set Computer - Máy tính với tập lệnh đơn giản hóa) là mộtphương pháp thiết kế các bộ vi xử lý theo hướng đơn giản hóa tập lệnh, thời gian thựchiện được đồng bộ bằng xung clock là như nhau Các bộ vi xử lý RISC thông dụng hiệnnay là PowerPC của IBM, DEC Alpha, PIC, ARM, SuperH, MIPS, SPARC, và PA-RISC

Hình 1-1: Chip vi xử lý ARM Bảng 1-1: So sánh CPU RISC với các CPU khác

Trang 7

1.1.1 Lịch sử

Nhiều tính năng trong các bộ VXL được thiết kế nhằm giúp công việc lập trình trở nên dễdàng hơn những tính năng thường cần vài chu kỳ máy để thực hiện lại thường bị các phầnmềm bỏ sót Cộng thêm sự khác biệt về hiệu năng giữa các CPU và bộ nhớ chính đã dẫnđến nhiều kỹ thuật hoặc nhằm tổ chức lại quá trình thực thi trong bộ xử lý, nhằm hạn chế

số lần truy cập bộ nhớ

Những phần mềm trong thực tế hầu hết tốn nhiều thời gian để thi hành một số tác vụ đơngiản, vì vậy một số nhà nghiên cứu hướng đến việc tối ưu hóa những tác vụ này Do xung

nhịp (clock rate) của CPU bị hạn chế 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ủaRISC chính là đơn giản hóa các lệnh, để mỗi lệnh có thể được thực thi chỉ trong 1 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 tính với tập lệnhđược đơn giản hóa" - RISC

Những năm cuối 1970, các nhà nghiên cứu của IBM đã khẳng định rằng hầu hết cácphương pháp đánh địa chỉ trực giao bị các chương trình bỏ sót Đây là kết quả khôngmong muốn khi sử dụng các trình biên dịch cấp cao thay vì sử dụng hợp ngữ

Andrew Tanenbaum dựa vào kết quả đo đạc lúc đó khẳng định những thiết kế thừa quámức Ông cho rằng phần lớn các hằng có thể thực hiện bằng 13 bit, trong khi đó các CPUđược thiết kế theo bội số của 8 thường là 8, 16 hoặc 32 Nếu CPU cho phép các hằngđược cất trong những bit dư của mã lệnh sẽ làm giảm bớt đi rất nhiều lần truy cập bộ nhớ.Thay vì phải đọc từ bộ nhớ hay từ thanh ghi, quá trình thực thi sẽ nhanh hơn vì các hằng

đã ở ngay đó khi CPU cần

Một nghiên cứu nữa cũng chúng tỏ rằng những tính năng này hiếm khi được sử dụng vìthực ra chúng thực hiện chậm hơn một nhóm lệnh cùng thực hiện nhiệm vụ đó Đâygiống như một nghịch lý của tiến trình thiết kế VXL, người lập trình chỉ quan tâm đếnnhững lệnh được sử dụng phổ biến

CPU bắt đầu hoạt động nhanh hơn bộ nhớ Năm 1970, người ta tiên đoán sự việc này sẽcòn tiếp diễn không quá 1 thập niên nữa, và đến lúc đó CPU sẽ nhanh hơn bộ nhớ gấp

nhiều lần CPU cần thêm nhiều thanh ghi (hay còn gọi là cache) để có thể thực hiện ở tốc

độ nhanh hơn Nếu giảm sự phức tạp của CPU, những thanh ghi và bộ nhớ đệm mới sẽcần khoảng trống trên chip

RISC thường có tập lệnh rất lớn Cũng từ khuynh hướng đơn giản hóa đó, một số thiết kế

thú vị ra đời như MISC (Minimal Instruction Set Computer - Máy tính với tập lệnh tối thiểu) hay OISC (One Instruction Set Computer) với những máy tính như Transport Triggered Architectures, trong khi các thiết kế khác đi sâu vào vấn đề Turing tarpit.

Thời gian đầu của ngành công nghiệp máy tính, trình biên dịch chưa hình thành Côngviệc lập trình được thực hiện hoặc bằng ngôn ngữ máy (mã nhị phân) hoặc bằng hợp ngữ

Để việc lập trình đơn giản, các VXL được thêm những lệnh có thể biểu diễn trực tiếp

Trang 8

những cấu trúc của ngôn ngữ lập trình cấp cao Lúc đó thiết kế phần cứng dễ hơn nhiều

so với thiết kế trình dịch, vì thế mọi phức tạp đều dồn vào phần cứng

Điểm khác nhau của CPU RISC so với CPU CISC là khả năng thực thi mọi thứ trong cácthanh ghi, đọc và lưu dữ liệu vào các thanh ghi Do đó để tránh hiểu lầm nhiều nhà

nghiên cứu thích dùng thuật ngữ load-store.

Giờ đây để hoàn thành cùng một việc, chương trình được viết với những lệnh đơn giảnthay vì với một lệnh phức tạp, phần lớn các lệnh phải đọc từ bộ nhớ nhiều hơn do đócũng mất nhiều thời gian hơn

Những CPU thời kỳ trước không có nhiều thanh ghi vì những nguyên nhân sau:

 Một bit trong CPU bao giờ cũng giá trị cao hơn rất nhiều so với một bit ở bộ nhớngoài Với công nghệ tích hợp ở thời kỳ này để có thể sử dụng thêm thanh ghi nhấtđịnh phải có thêm vùng trống trên board hoặc trên chip

 Một lượng lớn thanh ghi cũng sẽ cần một lượng lớn các bit trong mã lệnh để xácđịnh các thanh ghi đó

Vì những lý do trên, những chuyên gia thiết kế VXL nỗ lực để mỗi lệnh có thể thi hànhcàng nhiều kĩ thuật càng tốt Điều này dẫn đến một lệnh sẽ làm tất cả công việc như nạp 2

số cần cộng, cộng chúng lại, và cuối cùng lưu trở lại vào bộ nhớ Cũng lệnh đó lại có thểđọc một số từ thanh ghi và số còn lại từ bộ nhớ sau đó lưu kết quả vào bộ nhớ Khuynhhướng thiết kế VXL này được gọi là Complex Instruction Set Computer – CISC

Mục đích chung của thời gian này là mỗi lệnh giúp đỡ càng nhiều khả năng đánh địa chỉcàng tôt Điều này dẫn đến một số phức tạp cho CPU, mặc dù theo nguyên lý mỗi lệnh cóthể được tối ưu khác nhau, làm quá trình thiết kế nhanh hơn nếu người lập trình sử dụngcác lệnh đơn giản

Những năm đầu thập niên 1980, công nghệ thiết kế VXL đã đạt đến đỉnh điểm Sự tăngcường chỉ còn có thể hoàn thiện với công nghệ bán dẫn, như giảm bớt đường kính củacác transistor hoặc dây nối trên chip Dù cấu trúc tinh vi của chip không thay đổi nhưngvới kích thước nhỏ hơn nó vẫn có thể phục vụ ở tốc độ cao hơn Cũng có nhiều nỗ lực đểthiết kế các chip VXL đồng thời Thay vì làm cho chip chạy với tốc độ nhanh hơn người

ta làm cho nhiều chip có thể cùng chia sẻ các tác vụ

Ý tưởng đầu tiên có lẽ là "kênh dẫn" (pipeline) Đây là một khả năng nhằm chia nhỏ thời

gian thực hiện một lệnh thành nhiều chu trình, và các chu trình khác nhau của các lệnhkhác nhau có thể được thực thi đồng thời Một bộ xử lý thông thường đọc một lệnh, giải

mã nó, đọc những vùng nhớ lệnh đó cần, thực thi lệnh, trả kết quả về Với kỹ thuật "kênhdẫn", VXL có thể đọc một lệnh ngay sau khi nó đọc xong lệnh trước đó, tức là nó vừagiải mã một lệnh vừa đọc lệnh kế tiếp, tới chu kỳ kế VXL sẽ làm việc với ba lệnh cùnglúc, và cứ thế tiếp tục 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 VXL

Một cách khác là dùng nhiều phân đoạn xử lý song song trong cùng một VXL Giả sửphải giải quyết một lệnh VXL sẽ tìm cách làm ngay lập tức lệnh kế tiếp trong một đơn vị

Trang 9

xử lý khác Tuy nhiên đây là một giải pháp khá khó thực hiện vì nhiều lệnh đôi khi lạiphụ thuộc vào kết quả của lệnh trước nó.

Cả hai phương án 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ìkích thước trên chip là hạn hẹp đó để thêm những khả năng mới này cần loại bỏ đi nhữngtính năng khác Vì thế RISC được lợi ích trước tiên do về cấu hình nó dễ hiểu hơn CISCkhá lớn Những thiết kế RISC đầu đời phát triển được thêm những khả ích mới giúpchúng hình thành những chip CISC tương ứng Lúc này các chuyên gia bắt đầu phát hiệnđến việc cộng những điều này vào những chip CISC trong khi vẫn chắc chắn đường kínhcủa chúng, công việc này kéo dài suốt những năm cuối thập niên 1980 và đầu 1990

Dù ở bất kỳ khả năng nào, đơn vị logic của một chip RISC bao giờ cũng cần ít transistorhơn so với của một chip CISC Sự kiện này giúp người lập trình có rất nhiều sự nhạy bén,

ví dụ họ có thể:

Những đặc điểm thường thấy trong 1 chip RISC:

1 Tăng số kích thước thanh ghi

2 Sử dụng các phương pháp tối ưu để tăng mức độ xử lý song song bên trong CPU(pipeline, superscalar)

3 Tăng kích thước cache

4 Thêm các tính năng như I/O, timer v.v…

5 Thêm các bộ xử lý vector

6 Tận dụng các dây chuyền công nghệ cũ, trong khi với CISC điều này rất khó khăn

do kích thước chip lớn hơn

7 Cung cấp những chip cho những ứng dụng có yêu cầu cao về thời gian sử dụng pin

1 Định dạng chuẩn mã lệnh (ví dụ lệnh có chiều dài cố định, các bit của mã lệnh luônnằm ở vị trí cố định trong mã lệnh) sẽ làm quá trình giải mã lệnh đơn giản hơn

2 Các thanh ghi đồng nhất, do đó chúng có thể được sử dụng thay thế nhau trong mọitình huống (tuy nhiên các thanh ghi dành cho số nguyên và số thực dấu chấm động vẫnphân biệt nhau)

3 Cách đánh địa chỉ đơn giản Để có những phương pháp đánh địa chỉ phức tạp cầnkết hợp với các phép toán số học

4 Hỗ trợ rất ít kiểu dữ liệu (một số chip CISC có thể có cả các lệnh thao tác với chuỗi,

xử lý số phức hoặc ma trận Những lệnh như thế chẳng bao giờ tồn tại trong 1 chipRISC lý tưởng)

Trang 10

Ngày nay, một số kiến trúc RISC được hình thành dựa vào kiến trúc Harvard, trong đóđường dữ liệu và đường chương trình khác biết Điều này làm cho quá trình đọc dữ liệu

và mã lệnh có thể thực hiện đồng thời do đó có thể nâng cao công suất của VXL

Một trong những điểm yếu của các VXL RISC thế hệ đầu tiên là hiệu ứng branch delayslot Hiệu ứng này xảy ra khi có 1 lệnh nhảy có điều kiện, lúc đó dù có thực hiện nhảyhay không thì một hoặc một số lệnh theo sau vẫn được thực thi do các lệnh này đã đượcđưa vào pipeline trong lúc lệnh nhảy đang được xử lý Điều này gây ra một khoảng thờigian trễ khi thực thi lệnh nhảy có điều kiện branch delay slot không những xuất hiệntrong những VXL RISC như MIPS, PA-RISC và SPARC mà còn cả trong các DSP nhưµPD77230 hoặc TMS320C3x Tuy nhiên ngày nay trong các thiết kế RISC hiện đạingười ta đã có thể loại bỏ được hiệu ứng này

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 (8086 có 400 mã lệnh) cộng với 12má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ếntrúc load-store, nó hỗ trợ 2 phương pháp đánh địa chỉ, có 11 đơn vị được "kênh dẫn hóa",năm đơ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 bank

do đó các đơn vị đọc ghi có thể hoạt động đồng thời) Tốc độ xung đồng hồ/lệnh nhanhhơn 10 lần so với tốc độ truy xuất bộ nhớ

Cũng khoảng thời gian đó John L Hennessy thực hiện dự án MIPS ở Đại học Stanfordnăm 1981 MIPS hầu như chỉ chú trọng vào khả năng pipeline để phục vụ tối đa kĩ năngcủa các VXL Cho dù đã được thực hiện trước đó rồi, nhưng với RISC, phương pháp này

đã thực sự được cải tiến vượt bậc Nhưng vấn đề thiết yếu nhất, cũng phiền toái nhất, là

nó yêu cầu tất cả các lệnh quyết định 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ể thi hành ở tốc độ rất cao và đây hầu như 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 kể trên đều nhằm mục đích cải tiến các kỹ thuật hiện có, phải chờ tớinăm 1975, dự án đầu tiên nhằm cho ra đời 1 chip RISC hoàn chỉnh mới được thực hiện ở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 vốn được sử dụng rộng rãi trong các phần cứng của IBM

Một máy tính khác được thiết kế trên với kiến trúc load-store là Data General Nova Đây

là một CPU nhỏ 16 bit được thiết kế năm 1968 bởi 1 công ty Mỹ tên là Data General.Tuy nhiên VXL RISC được biết nhiều nhất lại đến từ một dự án được thực hiện bởichương trình VLSI (Very Large-Scale Integration) của DARPA (Defense AdvancedResearch Projects Agency) Dự án trên đã cho ra đời rất nhiều phát triển liên quan đếnthiết kế, sản xuất chip và cả đồ họa máy tính

Dự án RISC của Đại học Caifornia, Berkeley bắt đầu năm 1980 dưới sự hướng dẫn củaDavid Patterson với mục đích nâng cấp hiệu suất của các VXL dựa trên kỹ thuật pipeline

và register windows Một VXL thông thường có khá ít thanh ghi, các chương trình có thểtùy ý sử dụng các thanh ghi đó bất cứ lúc nào Vì thông thường mỗi lần gọi 1 chương

Trang 11

trình con, VXL cần lưu lại giá trị một số thanh ghi và sau đó hồi phục lại các thanh ghi đókhi thực hiện lệnh return.

Dự án RISC cho ra đời VXL RISC-I năm 1982 VXL này chứa 44.420 transistor (so với100.000 transistor cho 1 VXL CISC), với 32 lệnh nhưng hoàn toàn vượt xa các VXL đơnchip 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

Trong những năm đầu, các dự án chủ yếu chỉ được biết đến trong các trường đại học Đếnnăm 1986, tất cả các dự án về RISC bắt đầu cho ra đời sản phẩm Ngày nay hầu hết cácchip RISC, đều được thiết kế dựa trên kiến trúc RISC-II của Berkeley

Bảng 1-2: Các hệ thống và các RISC phổ biến

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à chotớ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 (CISC) Motorola 680x0 trong những PDA đầutiên, nhưng hiện tại là (RISC) ARM; Nintendo sử dụng 1 chip ARM7 trong GameBoy Advance và Nintendo DS Nhiều nhà sản xuất điện thoại di động, như Nokiacũng dựa trên kiến trúc của ARM

1.1.2 Lý thuyết về CPU RISC

1.1.2.1 Quy trình thiết kế số

Môi trường thiết kế tự động trong thiết kê số, quá trình thiết kế sơ khai bằng việc mô tảthiết kế bằng nhiều mức độ trừu tượng khác nhau và hoàn thành bằng việc lập thành danhsách các thiết bị cũng như các đường gắn kến giữa các linh kiện lại với nhau (netlist) chomột mạch tích hợp với phần mềm cụ thể(ASIC), mạch in (layout) cho một mạch tích hợptheo mục đích khách hàng (custom IC), hoặc một chương trình cho một thiết bị logic có

Trang 12

khả năng lập trình được (PLD) Nhiệm vụ của thiết kế, một thiết kế sẽ được mô tả bởi sựhỗn hợp giữa trình bày ở cấp độ hành vi (behavioural) Verilog, sử dụng những gói(module) thiết kế Verilog đã được thiết kế sơ khai, và việc gài chương trình các bus vàwire để hợp nhất các gói thiết kế này hình thành một hệ thống hoàn chỉnh Kĩ sư thiết kếcũng phải có phương hướng tạo ra dữ liệu để kiểm tra (testbench) xem thiết kế có đúngnhiệm vụ hay chưa cũng như dùng để thực hiện phần mềm sau khi kết hợp mô phỏng đểkiểm tra thiết kế bằng phần mềm Quartus, chèn những phương pháp kiểm tra, tìm kiếmthông thường hoặc kết hợp cả ba nguyên tắc trên Sau bước kiểm tra đánh giá thiết kế,thiết kế sẽ được hướng dẫn bằng việc gắn kết để hình thành phần cứng thực sự cho hệthống thiết kế cuối cùng (ASIC, custom IC or FPLD,…) Nếu hệ thống thiết kế là ASIC,thiết kế sẽ được trình bày bởi nhà sản xuất khác; nếu là custom IC, thiết kế sẽ được sảnxuất hiện tại của nhà sản xuất; nếu là FPLD, thiết kế sẽ được nạp lên thiết bị lập trìnhđược Sau bước kết hợp và trước khi phần cứng được hình thành, một phương thức môphỏng khác phải được hình thành Việc mô phỏng này, ta có thể sử dụng testbench tương

tự testbench đã sử dụng trong thử nghiệm trước kết hợp (presynthesis)

Trang 13

Hình 1-2: luồng thiết kế ASIC

1.1.2.2 Dẫn nhập thiết kế

Ban đầu trong thiết kế hệ thống số là bước kết nạp thiết kế Trong phần này, thiết kế được

mô tả bằng Verilog theo phương pháp phân tầm từ cao xuống thấp (top-down) Một thiết

kế hoàn thành chỉ có thể gồm những linh kiện ở mức cổng logic hoặc mức transistor,những khối (module) phần cứng có chức năng cấu thành rắc rối hơn được phân tập ở mức

độ hành vi, hoặc những linh kiện được chỉ mục bởi phương pháp bus Do những thiết kếVerilog ở mức cao thường được mô tả ở mức độ mà tại đó nó mô tả hệ thống nhữngthanh ghi và sự truyền dữ liệu giữa những thanh ghi này thông qua mô hình bus, việc mô

Trang 14

tả hệ thống thiết kế ở cấp độ này được xem như là mức độ kết nối gói dữ liệu giữa cácthanh ghi (RTL) Một thiết kế hoàn chỉnh được mô tả như vậy sẽ tạo ra được phần cứngtương ứng thực sự rõ ràng Những cấu trúc thiết kế Verilog ở cấp độ RTL sử dụng nhữngphát biểu qui trình (producedural statements), phép gài liên tục (continuous assignments),

và những biểu hiện được gọi sử dụng khối (module) đã xây dựng sẵn Những tuyên bốqui trình Verilog (procedural statements) được dùng để mô tả mức độ hành vi ở mức cao.Một hệ thống hoặc một linh kiện được mô tả ở cấp độ hành vi thì tương ứng với việc mô

tả trong ngôn ngữ phần mềm Mô tả hệ thống một cách qui trình như vậy, cấu trúc if-else,case của Verilog cũng như những ngôn ngữ phần mềm khác đều sử dụng như nhau.Những phép gán liên tục (continuous assignment) trong Verilog là những phép gáncho việc thể hiện chức năng những khối logic, những phép cài bus, và phát biểu việc liênkết giữa hệ thống bus và các đường ngõ vào và đường ngõ ra Kết hợp với những hàmBoolean và những biểu thức có điều kiện, những cấu trúc phương pháp ngôn ngữ này cóthể được để được hình thành những linh kiện và hệ thống theo những phép gán thanh ghi

và bus của chúng Những linh kiện này có thể nhỏ như là mức cổng hay transistor, hoặc

có thể lớn như là một bộ vi xử lí hoàn chỉnh Những phát biểu gọi sử dụng khối Verilog

đã được thiết kế sẵn (instantiantion statements) được sử dụng cho những linh kiện mức

độ không cao trong một thiết kế ở cấp độ cao hơn Thay vì mô tả ở mức độ hành vi,chức năng, hoặc bus của một hệ thống, chúng ta có thể mô tả một hệ thống bằng Verilogbằng cách kết nối những linh kiện ở mức độ thấp hơn

1.1.2.3 Testbench trong Verilog

Một hệ thống được thiết kế dùng Verilog phải được thực thi và kiểm chứng xem thiết kế

đã đúng mục đích chưa trước khi hình thành ra phần cứng Trong thời gian chạy môphỏng này, những khuyết điểm trong mô hình và sự không tương xứng giữa các linh kiệndùng trong thiết kế có lẽ sẽ được tìm ra Chạy mô phỏng một thiết kế cần phải hình thành

ra một đường dữ liệu ngõ vào tìm ra và quá trình quan sát kết quả sau khi chạy môphỏng, dữ liệu dùng để kiểm chứng này được gọi là testbench Một testbench sử dụng cấutrúc mức cao của Verilog để tạo ra dữ liệu kiểm tra, quan sát đáp ứng ngõ ra, và cả việcbắt tay giữa những tín hiệu trong thiết kế Bên trong testbench, hệ thống thiết kế

Trang 15

cần chạy mô phỏng sẽ được gọi ra (instantiate) trong testbench Dữ liệu testbenchcùng với tiến trình thiết kế sẽ tạo ra một mô hình mô phỏng mà sẽ được sử dụng bởi mộtphương pháp mô phỏng Verilog.

1.1.2.4 Mô phỏng

Chạy mô phỏng dùng trong việc kiểm tra thiết kế được thi hành trước khi thiết kế đượckết hợp Bước chạy mô phỏng này được biết như mô phỏng ở cấp độ hành vi, cấp độRTL hay trước tổng hợp Ở mức độ RTL, một mô hình bao gồm xung chu kì clock nhưngkhông bao gồm trí hoãn thời gian trên cổng và cáp kết nối (wire) Chạy mô phỏng ở mức

độ này sẽ chính xác theo xung clock Thời gian của việc chạy mô phỏng ở mức độ RTL

là theo tín hiệu xung clock, không quan tâm đến những vấn đề như: nguy hiểm tiềm ẩn cóthể khiến thiết kế bị lỗi (hazards, glitch), hiện tượng chạy đua không kiểm soát giữanhững tín hiệu (race conditions), những vi phạm về thời gian setup và hold của tín hiệungõ vào, và những vấn đề liên quan đến định thời khác Ưu điểm của việc mô phỏng này

là tốc độ chạy mô phỏng nhanh so với chạy mô phỏng ở mức cổng hoặc mức transistor.Chạy mô phỏng cho một thiết kế đòi hỏi dữ liệu kiểm tra Thông thường trong môitrường mô phỏng Verilog sẽ cung cấp nhiều phương pháp khác nhau để đưa dữ liệu kiểmtra này vào thiết kế để kiểm tra Dữ liệu kiểm tra có thể được tạo ra bằng đồ họa sử dụngnhững công cụ soạn thảo dạng sóng, hoặc bằng testbench Những ngõ ra của công cụ môphỏng là những dạng sóng ngõ ra (có thể quan sát trực quan)

Trang 16

Hình 1-3 Hai cách khác nhau để định nghĩa dữ liệu kiểm tra ngõ vào

Để chạy mô phỏng với Verilog testbench, trong testbench sẽ kêu phần mềm thiết kế ra

để kiểm chứng, lúc này hệ thống lập trình được xem như là một thành viên của testbench,testbench sẽ cung cấp dữ liệu kiểm tra đến ngõ vào của hệ thống thiết kế Với mỗi xungclock thì ngõ ra bộ đếm sẽ tăng lên 1 Chú ý rằng, theo biểu đồ thời gian thì ngõ ra bộđếm thay đổi tại cạnh lên xung clock và không có thời gian trì hoãn do cổng cũng như trìhoãn trên đường truyền Kết quả chạy mô phỏng cho thấy chức năng của mạch đếm làchính xác mà không cần quan tâm đến tần số xung clock Hiển nhiên, những linh kiệnphần cứng thực sự sẽ có đáp ứng khác nhau Hơn nữa, nếu tần số xung clock được cấpvào mạch thực sự quá nhanh so với tốc độ truyến tín hiệu bên trong các cổng và transistorcủa thiết kế thì ngõ ra của thiết kế sẽ không thể biết được Việc mô phỏng này khôngcung cấp chi tiết về các vấn đề định thời của hệ thống thiết kế được mô phỏng Do đó,những vấn đề giấu kín về định thời của phần cứng do trì hoãn trên cổng sẽ không thể pháthiện được Đây là vấn đề điển hình của quá trỉnh mô phỏng tiền tổng hợp hoặc mô phỏng

ở mức độ hành vi Thiết kế hoạt động yếu thế nào, phục vụ được ở tần số nào chỉ có thểbiết được bằng việc kiểm tra thiết kế sau tổng hợp

1.1.2.5 CPU RISC 32 bit đơn chu kỳ

RISC(Reduced Instruction Set Computer): bộ lệnh chỉ gồm các lệnh đơn giản

Trang 17

Nhiệm vụ cơ bản nhất của CPU là phải thực hiện các lệnh được yêu cầu, gọi làinstruction, Các CPU sẽ sử dụng các tập lệnh (instruction set) khác nhau để có thể giaotiếp với nó.

CPU xử lý lệnh qua 2 bước, gọi là chu kỳ lệnh:

- Nạp lệnh (Fetch): Di chuyển lệnh từ memory vào thanh ghi(register) trong CPU

- Thực thi lệnh (Excute): Giải mã lệnh và thực thi thao tác yêu cầu

Trang 18

Hình 1-4: Kiến trúc CPU RISC 32 bit đơn chu kỳ

Ngôn ngữ máy cho phép người lập trình viên trình bày các chu trình đơn giản mà bộ vi

xử lý (CPU) có thể thực hiện được ngay các giới thiệu này được gọi là chỉ thị / lệnh(instruction) hoặc mã máy (machine code):

Trang 19

- Mỗi bộ vi xử lý (CPU) có 1 ngôn ngữ riêng, gọi là bộ lệnh (instruction set)

- Trong cùng 1 dòng vi xử lý (processor family) bộ lệnh gần giống nhau

Instruction là dãy bit chứa yêu cầu mà bộ xử lý trong CPU (ALU) phải thực hiện

- Instruction gồm 2 thành phần:

 Mã lệnh (opcode): thao tác cần thực hiện

 Thông tin về toán hạng (operand): các thành viên bị tác động bởi thao tác chứatrong mã lệnh

xây dựng theo kiến trúc (RISC) với 4 nguyên tắc:

- Càng đơn giản, độ ổn đinh cao

- Càng nhỏ gọn, tốc độ xử lý nhanh

- Tăng tốc xử lý cho những vấn đề thường xuyên xảy ra

- Thiết kế đòi hỏi sự thỏa hiệp tốt

Nguyên tắc lưu dữ liệu trong bộ nhớ

- MIPS thao tác và lưu trữ dữ liệu trong bộ nhớ theo 2 nguyên tắc:

 Alignment Restriction: Các đối tượng lưu trong bộ nhớ (từ nhớ) phải bắt đầu tạiđịa chỉ là bội số của kích thước đối tượng Mà mỗi từ nhớ có kích thước là 32 bit =

4 byte = kích thước lưu trữ của 1 thanh ghi trong CPU

 Big Endian: MIPS lưu trữ thứ tự các byte trong 1 word trong bộ nhớ theo nguyêntắc Big Endian

Thanh ghi trong CPU

- Thanh ghi lưu trữ

 MIPS lấy ra 8 thanh ghi ($16 - $23) dùng để thi hành các phép tính số học, đượcđặt tên tương ứng là $s0 - $s7

- Thanh ghi tạm thời

 MIPS lấy ra 8 thanh ghi ($8 - $15) dùng để chứa kết quả trung gian, được đặt têntương ứng là $t0 - $t7

Trang 20

Bảng 1-3: Thanh ghi trong CPU RISC

1.1.3 Hướng nghiên cứu

Các tập lênh của CPU RISC

Tìm hiểu đường đi của các lệnh trong cấu trúc RISC

Lưu giá vào trị thanh ghi trong Register File

Tổ chức lại quá trình thực hiện trong bộ vi xử lý hoặc nhằm giảm bớt số lần truy xuất bộnhớ

Các hằng hoàn toàn có thể biểu diễn bằng 13 bit, trong khi đó các CPU được thiết kế theobội số của 8 (thường là 8, trong những bit dư của mã lệnh sẽ làm giảm đi rất nhiều lầntruy xuất bộ nhớ Thay vì phải đọc từ bộ nhớ hay từ thanh ghi các hằng đã ở ngay đó khiCPU cần, vì thế quá trình thực thi sẽ nhanh hơn

1.2 Nguyên lý chung

1.2.1 Nguyên tắc lưu dữ liệu trong bộ nhớ

MIPS lưu dữ liệu trong bộ nhớ theo nguyên tắc Alignment Restriction, nghĩa là các đốitượng lưu trong bộ nhớ phải bắt đầu tại địa chỉ là bội số của kích thước đối tượng

Như vậy, từ nhớ phải bắt đầu tại địa chỉ là bội số của 4

Trang 21

Sắp thẳng hàng và không thẳng hàng

Hình 1-5: Nguyên tắc Alignment Restriction

1.2.2 Cú pháp lệnh

opt opr , opr1, opr2

opt (operator): Tên thao tác (toán tử, tác tử)

opr (operand): Thanh ghi (toán hạng đích) chứa kết quả

opr1 (operand 1): Thanh ghi (toán hạng nguồn 1)

opr2 (operand 2): Thanh ghi / hằng số (toán hạng nguồn 2)

Bảng 1-4:Cấu trúc lệnh

Type 31- -0Format (bits)

Trang 22

R Opcode (6) Rs (5) Rt (5) Rd (5) Shamt (5) Funct (6)

Trong đó:

Opcode: xác định số học / logic hoạt động sẽ được thực hiện

Rs: Thanh ghi đích mà kết quả sẽ được lưu giữ

Rt: Thanh ghi nguồn có chứa toán hạng thứ nhất

Rd: Thanh ghi nguồn có chứa toán hạng thứ hai

Shamt: Chứa số bit cần dịch trong các lệnh dịch

Funct: chứa số bit của từng loại lệnh khác nhau

CHƯƠNG 2 NỘI DUNG CỦA ĐỀ TÀI2.1 Đường dữ liệu của lệnh add

Ngày đăng: 21/01/2018, 20:25

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w