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

Nghiên cứu kỹ thuật đường ống áp dụng vào việc thiết kế cpu risc 32 bit

116 25 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 116
Dung lượng 3,24 MB

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

Nội dung

Có thể hiểu CPU kiểu RISC là CPU có tập lệnh RISC, là tập lệnh mà các lệnh chỉ thực hiện những tác vụ đơn giản và thời gian thực thi của đa số các lệnh này là một chu kỳ xung clock hệ th

Trang 2

Cán bộ hướng dẫn khoa học : ThS TỐNG VĂN ON

Trang 3

Tp.HCM, ngày 03 tháng 07 năm 2009

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

I- TÊN ĐỀ TÀI:

NGHIÊN CỨU KỸ THUẬT ĐƯỜNG ỐNG

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

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

- Thiết kế bộ vi xử lý RISC 32-bit Pipeline

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

III- NGÀY GIAO NHIỆM VỤ : 21/01/2009

IV- NGÀY HOÀN THÀNH NHIỆM VỤ : 03/07/2009

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 qua

Xin chân thành cảm ơn các Thầy, Cô trong khoa Điện – Điện Tử, đặc biệt là các

Thầy Cô trong bộ môn Điển Tử và Viễn Thông, Trường Đại Học Bách Khoa 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

Sau cùng tôi xin được bày tỏ tình cảm đến các bạn cùng khóa đã trao đổi nhiều tài

liệu và giúp đỡ tôi trong suốt thời gian học

TP Hồ Chí Minh, tháng 07 năm 2009

VÕ PHÚ THOẠI

Trang 5

CHƯƠNG 1

NGHIÊN CỨU ĐƯỜNG ỐNG VÀ ÁP DỤNG VÀO VIỆC

THIẾT KẾ CPU RISC 32-BIT

Đặt vấn đề

1.1 Giới thiệu về vi xử lý RISC

RISC là chữ viết tắt của máy tính tập lệnh rút gọn (reduced instruction set computer) Có thể hiểu CPU kiểu RISC là CPU có tập lệnh RISC, là tập lệnh mà các lệnh chỉ thực hiện những tác vụ đơn giản và thời gian thực thi của đa số các lệnh này là một chu kỳ xung clock hệ thống Người ta có xu hướng thay thế khái niệm cấu trúc RISC bằng một khái niệm mới gọi là cấu trúc load/store Một CPU có cấu trúc load/store khi mà các lệnh của nó chỉ thao tác trên dữ liệu chứa trong tập thanh ghi chứ không thể thao tác trên dữ liệu thuộc bộ nhớ Người lập trình muốn thao tác dữ liệu trên bộ nhớ thì phải chuyển dữ liệu từ bộ nhớ vào tập thanh ghi trước

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

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ôn nằ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ể sử dụng thay thế nhau trong mọi tì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ẫn phân biệt nhau)

Trang 6

3 Cách đánh địa chỉ đơn giản Để có những phương pháp đánh địa chỉ phức tạp cần kế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 chip RISC)

Các họ RISC 32 bit nổi tiếng là: ARM của công ty ARM Limited, MIPS của công ty Mips Technologies, PA-RISC của HP, PowerPC của IBM, SH của công ty Hitachi, SPARC của Sun Microsystems

1.2 Lịch sử phát triển của vi xử lý RISC

Vi xử lý 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 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 trú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 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ế trên 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 công ty Mỹ tên là Data General Tuy nhiên vi xử lý RISC được biết đến nhiều nhất lại đến từ một dự

án được tài trợ bởi chương trình VLSI (Very Large-Scale Integration) của DARPA (Defense Advanced Research Projects Agency) Chương trình trên đã 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

Trang 7

Dự án RISC của Đại học California, Berkeley bắt đầu năm 1980 dưới sự hướng dẫn của David Patterson với mục đích nâng cao hiệu suất của các vi xử lý dựa trên kỹ thuật pipeline và register windows Một vi xử lý thông minh 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 Còn đối với các vi xử lý sử dụng kỹ thuật register windows, có rất nhiều thanh ghi trong vi xử lý nhưng chương trình chỉ sử dụng cùng lúc một tập hợp nhỏ các thanh ghi Vì thông thường mỗi lần gọi 1 chương trình con, vi xử lý 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 Vì vậy bằng cách chuyển từ tập thanh ghi này sang tập thanh ghi khác (chuyển cửa sổ) chương trình có thể thực hiện các lệnh gọi hàm hoặc lệnh trả về một cách nhanh chóng

Dự án RISC cho ra đời vi xử lý RISC-I năm 1982 Vi xử lý này chứa 44.420 transistor (so với 100.000 transistor cho 1 vi xử lý CISC), với 32 lệnh nhưng hoàn toàn vượt xa khả năng của các vi xử lý đơn chip cùng thời Vi xử lý 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 đó John 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 vi xử lý Cho dù đã được sử dụng trước đó, nhưng với MIPS, kỹ thuật này đã thực sự cải tiến vượt bậc Nhưng vấn đề quan trong nhất ở đây và có lẽ cũng phức tạp nhất là nó đòi hỏi tất cả các lệ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ể hoạt động ở tốc

độ rất cao và đây là yếu tố quyết định đến tốc độ của vi xử lý 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ới nă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,

Trang 8

dự án này đã cho ra đời họ vi xử lý IBM 801 vốn được sử dụng rộng rãi trong các phần cứng của IBM

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 Đến nă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ác chip RISC, đều được thiết kế dựa trên kiến trúc RISC-II của Berkeley

Berkeley không thương mại hóa dự án của mình, tuy nhiên hầu hết các công

ty sau này đều sử dụng kiến trúc RISC-II như Sun Microsystems với SPARC hoặc Pyramid Technology Chính Sun là công ty đầu tiên chứng minh sức mạnh của RISC là có thật trong những hệ thống mới của mình, và cũng nhờ đó họ nhanh chóng chiếm lĩnh thị trường workstation lúc bấy giờ

John Hennessy tạm thời rời Standford để thành lập MIPS Computer Systems nhằm thương mại hóa dự án MIPS Thiết kế đầu tiên của họ là chip R2000, đây là thế hệ tiếp theo của chip MIPS MIPS nhanh chóng trở thành chip phổ biến nhất khi

nó được sử dụng trong PlayStation và Nintendo 64 game consoles Ngày nay chúng

là một trong những chip được sử dụng phổ biến trong các ứng dụng nhúng high-end

Rút kinh nghiệm từ thất bại của RT-PC, IBM thiết kế RS/6000 dựa trên kiến trúc POWER mới Họ chuyển họ chip AS/400 thành các chip có kiến trúc POWER

và nhận thấy ngay cả 1 lệnh phức tạp nhất cũng được thực thi nhanh hơn một cách đáng kể Kết quả đó là sự ra đời họ iSeries Kiến trúc POWER cũng được sử dụng trong các chip PowerPC nhưng ở cấp độ thấp hơn Ngày nay PowerPC là 1 trong những họ vi xử lý được sử dụng phổ biến trong xe hơi (một số xe có thể sử dụng trên 10 chip loại này) Đây cũng là họ vi xử lý được sử dụng trong máy tính Apple Macintosh cho tới năm 2006

Trang 9

Những nghiên cứu ở Anh cũng cho ra đời các dòng vi xử lý như INMOS Transputer, Acorn Archimedes và Advanced RISC Machine Những công ty vốn sản xuất CISC trước đây cũng nhanh chóng tham gia Intel với i860 và i960 vào cuối những năm 1980, nhưng không đạt được thành công như mong muốn

Motorola với chip 88000 nhưng cũng không thành công và họ nhanh chóng

từ bỏ để hợp tác cùng IBM sản xuất PowerPC AMD cho ra đời vi xử lý 29000 và trở thành vi xử lý phổ biến nhất những năm đầu thập kỷ 90

Ngày nay CPU RISC (và microcontroller) chiếm 1 lượng lớn CPU được sử dụng Kỹ thuật thiết kế RISC đem đến sức mạnh ngay cả ở những kích thước nhỏ,

do đó nó nhanh chóng chiếm lĩnh hoàn toàn thị trường CPU nhúng công suất thấp Đây là một thị trường cực kỳ lớn của CPU, có thể tìm thấy chúng trong xe hơi, điện thoại di động, thậm chí một số thiết bị khác có thể chứa hàng chục CPU loại này RISC cũng chiếm lĩnh thị trường workstation trong những năm 90 Sau khi Sun cho

ra đời SPARCstation, các hãng khác cũng vội vã hoàn thành các hệ thống dựa trên RISC của mình Thậm chí ngày nay thế giới của các mainframe cũng hoàn toàn dựa trên RISC

Họ vi điều khiển RISC bao gồm loại 8 bit, 16 bit và 32 bit

Riêng họ RISC 8 bit có các dòng sản phẩm nổi tiếng của các hãng như sau:

- PIC của Microchip;

- AVR của Atmel;

Đây là hai dòng sản phẩm nổi tiếng nhất và được ứng dụng rất nhiều trong các lĩnh vực tự động điều khiển, thiết bị y tế…

Riêng họ RISC 16/32 bit có các dòng sản phẩm nổi tiếng sau:

- ARM 7/9/11/Cortex của hãng ARM;

- MIPS của hãng MIPS Technologies;

Trang 10

- SPARC của hãng Sun

Đây là ba dòng sản phẩm mạnh nhất và chiếm thị phần rất lớn trong hầu hết các lĩnh vực thiết bị cầm tay như: điện thoại di động, thiết bị nghe nhạc MP3, iPods…và một số chủng loại máy tính của Sun, Apple

1.3 So sánh giữa CISC và RISC

Những người làm việc trong lĩnh vực điện tử hoặc máy tính đều quen thuộc với vi xử lý cấu trúc CISC của Intel: dòng vi xử lý 8 bit như 8051, dòng vi xử lý 16/32/64 bit như 80486, Pentium… nay đã chuyển sang cấu trúc RISC Một câu hỏi đặt ra: giữa CISC và RISC, cấu trúc nào tốt hơn ?

Vào những năm 70, dung lượng bộ nhớ còn rất ít và rất mắc Ví dụ, vào khoảng giữa thập niên 70, một bộ nhớ 16KB có giá trị khoảng 500USD Do đó việc tối thiểu hóa dung lượng bộ nhớ chương trình là một yêu cầu rất cần thiết Để đáp ứng yêu cầu này, mỗi lệnh của vi xử lý cần làm được nhiều việc hơn dẫn đến sự phức tạp của các lệnh Và điều hiển nhiên là phần cứng phải phức tạp hơn để có thể thực hiện các lệnh phức tạp này Phần cứng phức tạp làm cho giá thành sản xuất mắc hơn Đây chính là vấn đề mà các kỹ sư thiết kế vi xử lý phải đối mặt cho tới khi Wilkes đưa ra kỹ thuật điều khiển dùng vi chương trình vào năm 1951

Vi chương trình là một chương trình thông dịch, chức năng của nó là lấy lệnh phức tạp vào và cho ra một chuỗi các lệnh đơn giản mà phần cứng có thể thực hiện Nhờ vậy mà phần cứng không đòi hỏi phải phức tạp

Một lý do nữa dẫn đến sự phức tạp của tập lệnh CISC là người thiết kế cố gắng thu hẹp khoảng cách về ngữ nghĩa giữa ngôn ngữ máy và ngôn ngữ cấp cao Một lệnh ở ngôn ngữ cấp cao có thể được dịch ra thành nhiều lệnh ở ngôn ngữ máy

Trang 11

Nỗ lực tối thiểu hóa số lệnh ở ngôn ngữ máy tương ứng với một lệnh ở ngôn ngữ cấp cao đã góp phần làm cho các lệnh của vi xử lý phức tạp hơn

Tuy nhiên, nhiều công cụ cải tiến đo hiệu suất thực thi của CPU đã chứng minh rằng việc thực thi của đa số chương trình ứng dụng trong các CPU kiểu CISC

là dựa vào một số nhỏ các lệnh đơn giản, còn các lệnh phức tạp lại thực sự ít khi được dùng tới Điều này dẫn tới một kiểu thiết kế thứ hai là kiểu RISC

Người thiết kế vi xử lý theo triết lý RISC bỏ đi lớp vi chương trình, thay vào

đó, phần cứng sẽ trực tiếp thực thi lệnh Nhờ vào công cụ tối ưu của trình biên dịch

và hiệu quả của việc sử dụng đường ống, thực tế đã cho thấy việc thực thi một tác

vụ bằng các lệnh đơn giản của RISC nhanh hơn so với một lệnh phức tạp của CISC Ngoài ra, do phần cứng đơn giản và nhỏ, người ta có thể thiết kế tập thanh ghi bên trong CPU, hỗ trợ cho việc thực hiện các lệnh RISC

Đặc điểm chung của CISC là có tập lệnh gồm nhiều lệnh hơn và phức tạp hơn so với RISC Thời gian thực hiện lệnh của CISC không đều nhau và thông thường các lệnh sẽ có thời gian thực hiện dài hơn so với RISC Với ưu điểm có tập lệnh đơn giản hơn và nhanh hơn, RISC sẽ hoạt động tốt hơn so với CISC Tuy nhiên,

để thực hiện một nhiệm vụ nào đó thì RISC lại cần nhiều lệnh hơn so với CISC (vì một lệnh phức tạp của CISC phải được thay bằng nhiều lệnh đơn giản hơn của RISC) Điều đó có nghĩa là bộ nhớ chương trình của RISC sẽ cần nhiều hơn so với CISC khi cùng thực thi một nhiệm vụ

Một ưu điểm nữa của RISC là với tập lệnh đơn giản hơn, người ta cần ít transistor hơn để tạo ra nó so với CISC cùng loại, công việc thiết kế dễ dàng hơn, ít tốn kém hơn và do đó chip RISC rẻ hơn so với CISC cùng loại

Trang 12

Ngoài ra, tập lệnh đơn giản của RISC sẽ khiến việc xây dựng trình biên dịch

dễ dàng hơn Tuy nhiên, việc trả lời câu hỏi trên không phải dễ dàng ngay cả đối với chuyên gia về cấu trúc máy tính Một số chuyên gia cho rằng với tập lệnh đơn giản, RISC trút gánh nặng về phía những chuyên gia lập trình cho RISC Chương trình viết cho RISC sẽ trở nên phức tạp hơn và đòi hỏi nhiều dòng lệnh hơn với cùng một nhiệm vụ

Chúng ta có thể kết luận rằng: trong tương lai cả CISC và RISC sẽ cùng tồn tại và phát triển theo những hướng riêng của mình Điều này thể hiện rõ trong thị phần mà CISC và RISC đang chia sẻ:

- Khoảng 75% vi xử lý dùng trong PC, workstation và server dùng cấu trúc CISC (khoảng 25% còn lại dùng cấu trúc RISC là máy tính Apple, IBM RISc System/6000 workstation và máy tính của Sun)

- RISC gần như thống trị trong các ứng dụng nhúng, các thiết bị cầm tay như điện thoại di động, máy nghe nhạc MP3, iPod…, các sản phẩm dùng trong gia đình

Việc chia sẻ thị phần như vậy đang diễn ra và theo nhiều chuyên gia, điều đó vẫn còn đúng trong một thời gian dài nữa Đối với ngành thiết kế vi mạch còn quá non trẻ của Việt Nam, nếu phải lựa chọn đầu tư vào thiết kế vi xử lý theo cấu trúc nào thì chúng ta nên chọn cấu trúc RISC Nguyên nhân là do việc nghiên cứu và đầu tư vào RISC sẽ mở cửa cho chúng ta vào các thị phần dễ xâm nhập và phát triển nhanh chóng như hệ thống nhúng, các thiết bị cầm tay, sản phẩm gia dụng… Trong khi đó, đầu tư nghiên cứu CISC, chúng ta sẽ phải đối mặt với một thị phần rất khó vào với các nhà sản xuất khổng lồ như Intel, AMD… với số chủng loại sản phẩm không nhiều

Trang 13

1.4 Ứng dụng của RISC 32 bit

Vi xử lý RISC 16 hoặc 32 bit chủ yếu được sử dụng trong các thiết bị đòi hỏi tốc độ cao và tiết kiệm năng lượng như điện thoại di động, thiết bị thông tin cầm tay, router… Điển hình có đến 70% điện thoại di động trên thế giới hiện nay sử dụng vi

xử lý cấu trúc RISC của ARM Điện thoại iPhone ra đời vào tháng 7/2007 sử dụng đến 8 lõi ARM bên trong Thông thường các vi xử lý RISC có độ rộng dữ liệu 32 bit, nhưng lại có khả năng chuyển sang chế độ 16 bit trong trường hợp người sử dụng cần tiết kiệm bộ nhớ và tăng mật độ chương trình Các vi xử lý như vậy được gọi là 16/32 bit

Trang 14

CHƯƠNG 2

KIẾN TRÚC RISC 32-BIT ĐA CHU KỲ

2.1 Tổng quan về thực hiện đa chu kỳ:

- Mỗi bước của lệnh chiếm một chu kỳ clock Do vậy, một lệnh chiếm nhiều

hơn 1 chu kỳ clock để hoàn tất

- Không phải mọi lệnh đều chiếm cùng số chu kỳ clock để hoàn tất

- Thiết kế nhiều chu kỳ cho phép

+ Các tốc độ clock nhanh hơn

+ Các lệnh khác nhau chiếm số chu kỳ clock khác nhau

+ Các đơn vị chức năng được sử dụng nhiều hơn một lần cho mỗi lệnh miễn là các đơn vị này được sử dụng trên những chu kỳ clock khác nhau, do vây:

- Chỉ cần một bộ nhớ (chung cho lệnh và dữ liệu)

- Chỉ cần một ALU/mạch cộng

Trang 15

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

- Các thanh ghi cần được thêm vào sau mỗi đơn vị chức năng chính để lưu giữ giá trị xuất ra cho đến khi giá trị này được sử dụng trong chu kỳ clock tiếp theo

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

Trang 16

Tiếp cận thiết kế CPU đa chu kỳ:

- Chia các lệnh thành nhiều bước trong đó mỗi bước chiếm 1 chu kỳ clock, trong khi đó thử:

+ Cân bằng lượng công việc cần được thực hiện trong mỗi bước

+ Chỉ sử dụng 1 đơn vị chức năng chính mỗi chu kỳ clock

- Ở cuối mỗi chu kỳ clock

+ Lưu các giá trị của lệnh hiện hành sẽ sử dụng trong chu kỳ clock sau trong phần tử trạng thái (thanh ghi nội, người lập trình không thể thấy được)

IR – Instruction Register (thanh ghi lệnh)

MDR – Memory Data Register (thanh ghi dữ liệu bộ nhớ)

A và B – Register File read data registers (các thanh ghi dữ liệu đọc của tập thanh ghi)

ALUout – ALU output register (thanh ghi ngõ ra ALU)

Tất cả (trừ IR) chỉ lưu giữ dữ liệu giữa cặp chu kỳ clock kề nhau (nên chúng không cần tín hiệu điều khiển ghi)

+ Dữ liệu được sử dụng bởi các lệnh theo sau được lưu giữ trong các phần

tử trạng thái, người lập trình thấy được (i.e., tập thanh ghi, PC hoặc bộ nhớ)

- Việc đọc/ghi đến

+ Thanh ghi bất kỳ trong các thanh ghi nội hoặc PC xảy ra (nhanh) ở cuối một chu kỳ clock

+ Việc đọc/ghi đến tập thanh ghi chiếm ~50% chu kỳ clock do điều này

có thêm tổn phí truy cập và điều khiển (việc đọc có thể được thực hiện song song với giải mã)

- Cần thêm vào các mạch ghép kênh ở trước vài ngõ vào của đơn vị chức năng chính, do các port ngõ vào của đơn vị chức năng sẽ có nhiều ngõ vào, lúc này được dùng chung bởi nhiều chu kỳ clock khác nhau

- Mọi thao tác xuất hiện trong một chu kỳ clock sẽ xảy ra song song

Trang 17

+ Điều này hạn chế đối với một thao tác ALU, một truy cập bộ nhớ và một truy cập tập thanh ghi mỗi chu kỳ clock

2.4 5 bước của lệnh

1 Tìm nạp lệnh

2 Giải mã lệnh và tìm nạp thanh ghi

3 Thực thi lệnh loại R, tính địa chỉ đọc/ghi bộ nhớ, hoàn tất rẽ nhánh, hoặc hoàn tất nhảy

4 Truy cập đọc bộ nhớ, hoàn tất ghi bộ nhớ hoặc hoàn tất lệnh loại R

5 Hoàn tất đọc bộ nhớ (ghi kết quả “trở về”)

CÁC LỆNH ĐƯỢC THỰC HIỆN TỪ 3 ĐẾN 5 CHU KỲ!

2.4.1 Tìm nạp lệnh:

- Sử dụng PC để nhận lệnh từ bộ nhớ và đặt lệnh vào thanh ghi lệnh (instruction register)

- Tăng PC bởi 4 và đặt kết quả trở lại PC

- Có thể được mô tả cô đọng bằng cách sử dụng mức truyền thanh ghi RTL “Register – Transfer Level” của VHDL:

IR = Memory [PC];

PC= PC + 4;

Trang 18

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

2.4.2 Giải mã lệnh và tìm nạp thanh ghi

Chưa biết là lệnh gì, do vậy chỉ có thể

+ Đọc các thanh ghi rs và rt nếu (in case) ta cần

+ Tính địa chỉ rẽ nhánh nếu (in case) lệnh là lệnh rẽ nhánh

Trang 19

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

2.4.3 Thực thi lệnh (tùy thuộc lệnh)

ALU sẽ thực hiện 1 trong 4 chức năng, dựa vào loại lệnh

Trang 20

Hoạt động của đường dữ liệu trong thời gian thực thi lệnh lw và sw

2.4.4 Truy cập đọc bộ nhớ, hoàn tất ghi bộ nhớ

Trang 21

Hoạt động của đường dữ liệu trong thời gian truy cập bộ nhớ (lệnh Lw)

2.4.5 Hoàn tất việc đọc ghi bộ nhớ (ghi kết quả trở về)

Tất cả những gì còn lại là ghi trở về “tập thanh ghi” dữ liệu vừa đọc từ bộ nhớ đối với lệnh lw

Reg[IR[20-16]] = MDR;

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

- Các tín hiệu điều khiển đường dữ liệu đa chu kỳ không được xác định đơn độc bởi các bit trong lệnh

+ eg., các bit opcode cho biết thao tác gì ALU sẽ thực hiện, nhưng không cho biết chu kỳ nào của lệnh cần được thực hiện tiếp theo

- Ta có thể sử dụng máy trạng thái hữu hạn cho điều khiển

+ Tập các trạng thái (trạng thái hiện hành được lưu trong thanh ghi trạng thái)

+ Hàm trạng thái kế (được xác định bởi ngõ vào và trạng thái hiện tại) + Hàm ngõ ra (được xác định bởi trạng thái hiện tại)

Trang 22

- Do vậy ta sẽ sử dụng máy trạng thái Moore (các tín hiệu điều khiển đường dữ liệu chỉ dựa trên trạng thái hiện tại)

Thực hiện máy trạng thái hữu hạn

Trang 23

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

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

2.6 Đơn giản hóa thiết kế đơn vị điều khiển

- Đối với việc thực hiện các lệnh của MIPS ISA đầy đủ, ta có thể mất từ

1 đến 20 + chu kỳ clock

+ dẫn đến máy trạng thái hữu hạn có vài trăm đến vài ngàn trạng thái cùng với số lượng các cung (các trình từ trạng thái) thậm chí còn nhiều hơn

• Biểu diễn máy trạng thái như vậy trở nên phức tạp không thể thực hiện được

Trang 24

- Thay vào đó, ta có thể biểu diễn tập các tín hiệu điều khiển được xác lập trong một trạng thái dưới dạng “lệnh” điều khiển mức thấp được thực thi bởi đường dữ liệu → các vi lệnh (microinstruction)

- “Việc thực thi” vi lệnh tương đương với việc xác lập các tín hiệu điều khiển được chỉ ra bởi vi lệnh

Trang 25

CHƯƠNG 3

KIẾN TRÚC CPU RISC 32-BIT CÓ ĐƯỜNG ỐNG

3.1 Định thời đơn chu kỳ so với đa chu kỳ

3.2 Bằng cách nào có thể thực hiện nhanh hơn ?

- Chia lệnh nhiều chu kỳ thành các bước ngày càng nhỏ

• Đến một giai đoạn ở đó việc nạp các thanh ghi trạng thái cũng tiêu phí nhiều thời gian như là thực hiện công việc

- Bắt đầu việc tìm nạp và thực thi lệnh tiếp theo trước khi lệnh hiện hành hoàn tất

• Kỹ thuật đường ống – các bộ vi xử lý hiện đại đều có đường ống để

tăng hiệu suất

- Tìm nạp (và thực thi) nhiều hơn một lệnh ở một thời điểm

Trang 26

- Tìm nạp (và thực thi) các lệnh từ nhiều hơn một luồng lệnh (multithreading(hyperthreading))

3.3 Bộ xử lý MIPS có đường ống

- Bắt đầu lệnh tiếp theo trước khi lệnh hiện hành được hoàn tất

• Cải thiện thông lượng (throughtput) – lượng tổng công việc được thực hiện trong khoảng thời gian cho trước

• Độ trễ (latency) lệnh (thời gian thực thi, thời gian trì hoãn, thời gian đáp ứng – thời gian từ lúc bắt đầu lệnh đến khi hoàn tất lệnh) không được giảm

+ chu kỳ clock (thời gian tầng đường ống) bị giới hạn bởi tầng chậm nhất

+ đối với một số lệnh, một số tầng là những chu kỳ bỏ phí

- Độ trễ = thời gian thực thi (thời gian trì hoãn hoặc đáp ứng) – thời gian tổng từ lúc bắt đầu đến lúc kết thúc một lệnh

- Đối với các bộ xử lý, đại lượng đo quan trọng là thông lượng (THROUGHPUT) (hoặc băng thông thực thi) – lượng tổng công việc thực hiện được trong khoảng thời gian cho trước

- Đối với các bộ nhớ, đại lượng đo quan trọng là băng thông (BANDWIDTH) – lượng thông tin được truyền thông ngang qua một liên

Trang 27

kết nối (e.g.,bus) mỗi đơn vị thời gian; số thao tác thực hiện được mỗi giây (độ rộng WIDTH của thao tác và tốc độ RATE của thao tác)

Đơn chu kỳ, đa chu kỳ so với đường ống

Phần trên trình bày giản đồ định thời về những khác nhau giữa thực hiện đơn chu kỳ, thực hiện đa chu kỳ và thực hiện có đường ống

Thí dụ, trong thực hiện có đường ống, ta có thể kết thúc việc thực thi chuỗi lệnh load, store và R-type trong 7 chu kỳ

3.4 Đường dữ liệu có đường ống

Trang 28

Lưu ý hai ngoại lệ của luồng từ phải sang trái

1 WB ghi kết quả ngược trở về tập thanh ghi ở giữa đường dữ liệu

2 Việc lựa chọn giá trị kế tiếp của PC, một ngõ vào đến từ địa chỉ rẽ nhánh tĩnh được từ tầng MEM

Chỉ có những lệnh sau đó trong đường ống là có thể bị ảnh hưởng bởi hai thao tác di chuyển dữ liệu REVERSE này

Thao tác thứ nhất (WB đến ID) dẫn đến hazard dữ liệu

Thao tác thứ hai (MEM đến IF) dẫn đến hazard điều khiển

- Tất cả lệnh đều phải cập nhật trạng thái nào đó trong bộ xử lý – tập thanh ghi, bộ nhớ hoặc PC – do vậy các thanh ghi đường ống riêng rẽ là dư thừa đối với trạng thái được cập nhật (không cần)

- PC có thể được xem như là một thanh ghi đường ống Thanh ghi này cung cấp cho tầng IF của đường ống Không giống như các thanh ghi đường ống khác, PC là phần của trạng thái kiến trúc thấy được – nội dung của PC phải được lưu khi ngoại lệ xảy ra (nội dung của các thanh ghi đường ống khác được bỏ qua)

Đơn vị điều khiển MIPS có đường ống

Trang 29

Mọi tín hiệu điều khiển có thể được xác định trong thời gian giải mã và được giữ trong các thanh ghi trạng thái giữa các tầng của đường ống

3.5 Đường ống của ISA MIPS

- Điều gì tạo thuận lợi

• Mọi lệnh đều có cùng chiều dài (32 bit), nên thể tìm nạp trong tầng 1st

- Điều gì tạo khó khăn

• Hazard cấu trúc: nếu ta chỉ có 1 bộ nhớ thì sao ?

• Hazard điều khiển: các rẽ nhánh thì sao ?

• Hazard dữ liệu: nếu các toán hạng đầu vào của lệnh phụ thuộc vào

đầu ra của lệnh trước đó thì sao ?

3.6 Đồ thị đường ống của MIPS

IM : instruction memory (bộ nhớ lệnh)

DM : data memory (bộ nhớ dữ liệu)

- Có thể giúp giải đáp các vần đề như là:

• Cần bao nhiêu chu kỳ để thực thi đoạn mã này ?

Trang 30

• ALU sẽ làm gì trong chu kỳ 4 ?

• Có hazard không, tại sao xảy ra và làm cách nào để sửa chữa hazard?

3.7 Lợi điểm của Kỹ thuật đường ống

Cho hiệu suất cao !!!

3.8 Rắc rối của Kỹ thuật đường ống

- Đúng : các hazarad đường ống

• hazard cấu trúc: hai lệnh khác nhau cố gắng sử dụng cùng tài nguyên

ở cùng một thời điểm

• hazard dữ liệu: cố gắng sử dụng dữ liệu trước khi dữ liệu sẵn sàng,

(các) toán hạng nguồn của một lệnh được tạo ra bởi lệnh trước đó vẫn còn trong đường ống

• hazard điều khiển: cố gắng quyết định về luồng điều khiển chương

trình trước khi điều kiện được đánh giá và địa chỉ đích PC mới được tính toán, các lệnh rẽ nhánh và nhảy, các ngoại lệ

Trang 31

- Luôn luôn có thể giải quyết hazard bằng cách chờ

• đơn vị điều khiển đường ống phải phát hiện hazard

• và hành động giải quyết hazard

Lưu ý rằng hazard dữ liệu có thể xuất phát từ các lệnh R-type hoặc lw

Trang 34

- Các đường truyền tiếp (forwarding path) chỉ hợp lệ nếu tầng đích chậm hơn (theo thời gian) so với tầng nguồn

- Truyền tiếp sẽ khó khăn hơn nếu có nhiều kết quả truyền tiếp mỗi lệnh hoặc nếu ta cần ghi một kết quả sớm hơn (trước) trong đường ống

Trang 35

- Lưu ý rằng lw chỉ là một thí dụ khác của việc sử dụng thanh ghi (ngoài các thao tác của ALU)

- Cần stall ngay cả với việc truyền tiếp khi hazard dữ liệu kéo theo việc nạp (load)

Các hazard điều khiển

- Khi luồng các địa chỉ lệnh không tuần tự (i.e.,PC = PC + 4)

• Các rẽ nhánh điều kiện (beq, bne)

• Các rẽ nhánh không điều kiện (j, jal, jr)

• Các ngoại lệ

- “Các giải pháp” có thể:

• Stall (ảnh hưởng đến hiệu suất)

Trang 36

• Di chuyển điểm quyết định rẽ nhánh sớm có thể được trong đường ống, bằng cách này làm giảm số chu kỳ stall

• Quyết dịnh trì hoãn (yêu cầu trình dịch hỗ trợ)

• Dự đoán và hy vọng điều tốt nhất !

- Hazard điều khiển xảy ra ít thường xuyên hơn so với hazard dữ liệu,

nhưng không có gì có hiệu quả đối với hazard điều khiển so với việc truyền tiếp dành cho hazard dữ liệu

Lệnh Nhảy chịu một stall

- Nhảy không được giải mã cho đến ID, nên một flush được cần đến

• Để flush, thiết lập IF.Flush để xóa trường lệnh của thanh ghi đường ống IF/ID (làm cho lệnh thành lệnh noop)

- May mắn thay, nhảy hiếm khi xảy ra – chỉ 3% của hổn hợp lệnh SPECint

Trang 37

3.9 Rẽ nhánh gây ra hazard điều khiển

- Những phụ thuộc ngược theo thời gian gây ra hazard

Trang 38

- “Giải pháp” khác là thêm vào phần cứng vừa đủ sao cho ta có thể kiểm tra các thanh ghi, tính toán địa chỉ rẽ nhánh và cập nhật PC trong thời gian tầng thứ hai của đường ống Điều này sẽ làm giảm số stall chỉ còn lại 1

- Phương pháp thứ ba là dự đoán để quản lý các rẽ nhánh, nghĩa là luôn luôn dự đoán rằng các rẽ nhánh sẽ không thực hiện Khi đúng, đường ống tiếp tục ở tốc độ đầy đủ Khi sai, cần dừng (và đảm bảo không có

gì hoàn tất) Ta sẽ đề cập đến các tùy chọn này trong phần sau

- Lưu ý, địa chỉ rẽ nhánh là rẽ nhánh tương đối PC đến 4 + 4 + 2*4 = 16

Trang 39

Hai loại stall

- Lệnh noop được chèn vào giữa hai lệnh trong đường ống (e.g., các

hazard load – use)

• Giữ cho các lệnh sớm (trước) trong đường ống (sau trong chương trình) không phát triển xuống đường ống trong 1 chu kỳ (“loại bỏ” chúng đúng chỗ bằng các tín hiệu điều khiển ghi)

• Chèn lệnh noop bằng cách xóa các bit điều khiển trong thanh ghi đường ống ở tầng thích hợp

• Để cho các lệnh sau trong đường ống (trước trong chương trình) phát triển bình thường xuống đường ống

- Flush (hoặc sự bóp chết lệnh) là một lệnh trong đường ống được thay

thế bằng lệnh noop (cũng thực hiện đối với các lệnh được đặt liên tiếp

sau các lệnh j và beq)

• Xóa các bit điều khiển đối với lệnh cần được flush

Trang 40

Tóm tắt kỹ thuật đường ống

- Các bộ xử lý hiện đại đều sử dụng đường ống

- Đường ống không giúp độ trễ của tác vụ đơn, mà giúp thông lượng của

toàn bộ tải làm việc

- Tăng tốc tiềm tàng, chu kỳ clock thực sự nhanh và có khả năng hoàn tất một lệnh mỗi chu kỳ clock (CPI)

- Tốc độ đường ống bị giới hạn bởi tầng chậm nhất của đường ống

• Những tầng đường ống không cân bằng sẽ làm giảm hiệu quả

• Thời gian “làm đầy” đường ống và thời gian “làm rỗng” có thể ảnh hưởng đến sự tăng tốc đối với các đường ống sâu và chạy chương trình ngắn

- Phải phát hiện và giải quyết hazard

• Việc dừng (stalling) ảnh hưởng tiêu cực đến CPI (làm CPI nhỏ hơn giá trị lý tưởng là 1)

Ngày đăng: 16/02/2021, 18:36

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