Năm 1981, một nhóm các nhà nghiên cứu thuộc đại học Stanford do John L. Hennessy đứng đầu đã bắt đầu một công trình nghiên cứu về bộ xử lý MIPS đầu tiên. Khái niệm cơ bản là nhằm tăng đột xuất hiệu năng thông qua sử dụng một đường ống lệnh (pipeline instructions), một công nghệ đã được hiểu rõ nhưng lại khó phát triển. Thông thường một đường ống sẽ mở rộng việc chạy một câu lệnh thành vài bước, bắt đầu thực hiện “bước một” của câu lệnh trước khi câu lệnh trước hoàn thành. Trong khi đó, thiết kế truyền thống yêu cầu phải đợi cho đến khi một câu lệnh hoàn thành mới được chạy câu lệnh tiếp theo. Thiết kế theo pipeline làm giảm đáng kể thời gian rỗi của CPU khi thực hiện liên tiếp các câu lệnh.
Một rào cản chính của phương pháp đường ống lệnh là nó yêu cầu một khóa đồng bộ (interlocks) được cài đặt để chắc chắn rằng các câu lệnh chiếm nhiều chu kỳ đồng hồ để thực hiện sẽ dừng đường ống lại để nạp nhiều dữ liệu hơn – đơn giản là dừng lại cho tới khi nó kết thúc. Những khóa đồng bộ này cần một thời gian lớn để cài đặt và được cho là rào cản chính trong việc tăng tốc độ trong tương lai. Một thiết kế chủ chốt trong MIPS là yêu cầu tất cả các câu lệnh phải được hoàn thành trong 1 chu kỳ xung nhịp, nhờ thế loại bỏ được sự cần thiết của khóa đồng bộ. Mặc dù thiết kế này đã loại trừ một số câu lệnh hữu dụng, đáng kể nhất như là các lệnh nhân và chia yêu cầu nhiều bước, nhưng nó cho thấy hiệu suất tổng thể của hệ thống tăng lên rõ rệt bởi vì các vi xử lý có thể chạy ở xung nhịp lớn hơn rất nhiều. Tuy nhiên việc loại bỏ các câu lệnh trên lại không được các nhà thiết kế thời bấy giờ hoan nghênh. Rất nhiều ý kiến cho rằng thiết kế kiểu đường ống lệnh sẽ không thể tồn tại được, nếu chỉ thay một lệnh nhân phức tạp bằng rất nhiều các lệnh cộng đơn giản thì làm sao hệ thống có thể nhanh hơn được. Tuy nhiên thực tế đã cho thấy, tốc độ thuộc về thiết kế đường ống, chứ không phải thiết kế theo câu lệnh.
7 trang |
Chia sẻ: lvcdongnoi | Lượt xem: 2988 | Lượt tải: 0
Bạn đang xem nội dung tài liệu Vi xử lý Atom, để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Chương 1
LỊCH SỬ PHÁT TRIỂN
Mục tiêu
Giới thiệu về kiến trúc CISC
Giới thiệu về kiến trúc RISC
Tổng quan về dòng MIPS
Giới thiệu các dòng MIPS
1.1 Lịch sử kiến trúc vi xử lý
Các kiến trúc với tập lệnh phức tạp CISC (Complex Instruction Set Computer) được nghĩ ra từ những năm 1960. Vào thời kỳ này, người ta nhận thấy các chương trình dịch khó dùng các thanh ghi, rằng các vi lệnh được thực hiện nhanh hơn các lệnh và cần thiết phải làm giảm độ dài các chương trình. Các đặc tính nầy khiến người ta ưu tiên chọn các kiểu ô nhớ - ô nhớ và ô nhớ - thanh ghi, với những lệnh phức tạp và dùng nhiều kiểu định vị. Điều này dẫn tới việc các lệnh có chiều dài thay đổi và như thế thì dùng bộ điều khiển vi chương trình là hiệu quả nhất.
Bảng II.6 cho các đặc tính của vài máy CISC tiêu biểu. Ta nhận thấy cả ba máy đều có điểm chung là có nhiều lệnh, các lệnh có chiều dài thay đổi. Nhiều cách thực hiện lệnh và nhiều vi chương trình được dùng.
Tiến bộ trong lãnh vực mạch kết (IC) và kỹ thuật dịch chương trình làm cho các nhận định trước đây phải được xem xét lại, nhất là khi đã có một khảo sát định lượng về việc dùng tập lệnh các máy CISC.
Bộ xử lý
IBM 370/168
DEC 11/780
iAPX 432
Năm sản xuất
1973
1978
1982
Số lệnh
208
303
222
Bộ nhớ vi chương trình
420 KB
480 KB
64 KB
Chiều dài lệnh (tính bằng bit)
16 - 48
16 - 456
6 - 321
Kỹ thuật chế tạo
ECL - MSI
TTl - MSI
NMOS VLSI
Cách thực hiện lệnh
Thanh ghi- thanh ghi
Thanh ghi - bộ nhớ
Bộ nhớ - bộ nhớ
Thanh ghi - thanh ghi
Thanh ghi - bộ nhớ
Bộ nhớ - bộ nhớ
Ngăn xếp
Bộ nhớ- bộ nhớ
Dung lượng cache
64 KB
64 KB
0
Bảng II.6: Đặc tính của một vài máy CISC
Ví dụ, chương trình dịch đã biết sử dụng các thanh ghi và không có sự khác biệt đáng kể nào khi sử dụng ô nhớ cho các vi chương trình hay ô nhớ cho các chương trình.
1.1.1 Kiến trúc CISC
Tối thiểu hóa bộ nhớ lưu trữ lệnh bằng cách tăng tính phức tạp.
Thực hiện nhiều lệnh bậc cao hơn là chỉ thực hiện 1 thao tác
Các lệnh thường có toán hạng trực tiếp từ bộ nhớ
Có nhiều chế độ đánh địa chỉ khác nhau.
Thực hiện cơ chế vi mã
Các bộ VXL CISC : Digital VAX, Motorola MC 68000, Intel 8086, Pentium
Điều này dẫn tới việc đưa vào khái niệm về một máy tính với tập lệnh rút gọn RISC vào đầu những năm 1980. Các máy RISC dựa chủ yếu trên một tập lệnh cho phép thực hiện kỹ thuật ống dẫn một cách thích hợp nhất bằng cách thiết kế các lệnh có chiều dài cố định, có dạng đơn giản, dễ giải mã. Máy RISC dùng kiểu thực hiện lệnh thanh ghi - thanh ghi. Chỉ có các lệnh ghi hoặc đọc ô nhớ mới cho phép thâm nhập vào ô nhớ. Bảng II.7 diễn tả ba mẫu máy RISC đầu tiên: mẫu máy của IBM (IBM 801) của Berkeley (RISC1 của Patterson) và của Stanford (MIPS của Hennessy). Ta nhận thấy cả ba máy đó đều có bộ điều khiển bằng mạch điện (không có ô nhớ vi chương trình), có chiều dài các lệnh cố định (32 bits), có một kiểu thi hành lệnh (kiểu thanh ghi - thanh ghi) và chỉ có một số ít lệnh.
1.1.2 Kiến trúc RISC
Ta có thể định nghĩa mạch xử lý RISC bởi các tính chất sau:
Có 1 số ít lệnh(thông thường dưới 100 lệnh)
Có một số ít các kiểu định vị (thông thường hai kiểu: định vị tức thì và định vị gián tiếp thông qua một thanh ghi).
Có một số ít dạng lệnh (một hoặc hai)
Các lệnh đều có cùng chiều dài.
Chỉ có các lệnh ghi hoặc đọc ô nhớ mới thâm nhập vào bộ nhớ.
Dùng bộ tạo tín hiệu điều khiển bằng mạch điện để tránh chu kỳ giải mã các vi lệnh làm cho thời gian thực hiện lệnh kéo dài.
Bộ xử lý RISC có nhiều thanh ghi để giảm bớt việc thâm nhập vào bộ nhớ trong.
Bộ xử lý
IBM 801
RISC1
MIPS
Năm sản xuất
1980
1982
1983
Số lệnh
120
39
55
Dung lượng bộ nhớ vi chương trình
0
0
0
Độ dài lệnh (tính bằng bit)
32
32
32
Kỹ thuật chế tạo
ECL MSI
NMOS VLSI
NMOS VLSI
Cách thực hiện lệnh
Thanh ghi-thanh ghi
Thanh ghi-thanh ghi
Thanh ghi-thanh ghi
Bảng II.7 : Đặc tính của ba mẫu đầu tiên máy RISC
Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu kỳ máy.
Bộ xử lý RISC có các lợi điểm sau :
Diện tích của bộ xử lý dùng cho bộ điều khiển giảm từ 60% (cho các bộ xử lý CISC) xuống còn 10% (cho các bộ xử lý RISC). Như vậy có thể tích hợp thêm vào bên trong bộ xử lý các thanh ghi, các cổng vào ra và bộ nhớ cache .....
Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều thanh ghi (ít thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên tục và có hiệu quả (các lệnh đều có thời gian thực hiện giống nhau và có cùng dạng).
Thời gian cần thiết để thiết kế bộ điều khiển là ít. Điều này góp phần làm giảm chi phí thiết kế.
Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà ta gặp thường trong bộ điều khiển.
1.2 Tổng quan về dòng xử lý MIPS
MIPS : Microprocessor without Interlocked Pipeline Stage là một kiến trúc vi xử lý được phát triển bởi hãng MIPS Technologies . Cuối những năm 1990, 1/3 số lượng chip RISC (Reduced Instruction Set Computer ) được sản xuất dựa trên kiến trúc MIPS
Thiết kể MIPS được sử dụng rất rộng rãi trong các dòng máy tính đồ họa silicon, các hệ thống nhúng như TiVo thế hệ 2, các thiết bị sử dụng hệ điều hành Windows CE, Cisco routes và các máy chơi game console như Nitendo 64, Sony Playstation, Play Station 2, Play Station Portable…
Kiến trúc MIPS ban đầu là một hệ thống xử lý 32 bit (thanh ghi mở rộng 32 bit và các đường dẫn) trong khi các phiên bản sau này là hệ thống 64 bit. Đã có rất nhiều hiệu chỉnh trong các tập lệnh của MIPS, từ MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS 32 và MIPS 64. Hiện nay tồn tại 2 phiên bản là MIPS 32 (cho các hệ thống 32 bit) và MIPS 64 (cho các hệ thống 64 bit). MIPS 32 và MIPS 64 định nghĩa một tập các thanh ghi điều khiển và một tập lệnh. Một vài thành phần mở rộng bổ sung cũng được cung cấp, như là MIPS-3D: một tập đơn giản các câu lệnh SIMD về dấu chấm động để thực hiện các tác vụ đồ họa 3D; MDMX (MaDMaX) là mở rộng của các câu lệnh SIMD nguyên sử dụng các thanh ghi dấu chấm động 64 bit; MIPS16e chức năng nén vào dòng lệnh khiến cho chương trình chiếm ít không gian hơn và bổ sung gần đây là MIPS MT: kiến trúc đa luồng (MultirTheading) mới được bổ sung cho hệ thống, tương tự như là siêu phân luồng (HyperThreading) trong hệ thống Intel’s Pentium
Bởi vì các nhà thiết kế đã tạo ra một tập lệnh rất rõ ràng, các khóa học về kiến trúc máy tính trong các trường đại học và công nghệ thường dạy về kiến trúc MIPS. Các thiết kế MIPS CPU dùng cho gia đình đã ảnh hưởng rất lớn đến kiến trúc RISC sau này, như là DEC Alpha.
1.2.1 Lịch sử dòng xử lý MIPS
Năm 1981, một nhóm các nhà nghiên cứu thuộc đại học Stanford do John L. Hennessy đứng đầu đã bắt đầu một công trình nghiên cứu về bộ xử lý MIPS đầu tiên. Khái niệm cơ bản là nhằm tăng đột xuất hiệu năng thông qua sử dụng một đường ống lệnh (pipeline instructions), một công nghệ đã được hiểu rõ nhưng lại khó phát triển. Thông thường một đường ống sẽ mở rộng việc chạy một câu lệnh thành vài bước, bắt đầu thực hiện “bước một” của câu lệnh trước khi câu lệnh trước hoàn thành. Trong khi đó, thiết kế truyền thống yêu cầu phải đợi cho đến khi một câu lệnh hoàn thành mới được chạy câu lệnh tiếp theo. Thiết kế theo pipeline làm giảm đáng kể thời gian rỗi của CPU khi thực hiện liên tiếp các câu lệnh.
Một rào cản chính của phương pháp đường ống lệnh là nó yêu cầu một khóa đồng bộ (interlocks) được cài đặt để chắc chắn rằng các câu lệnh chiếm nhiều chu kỳ đồng hồ để thực hiện sẽ dừng đường ống lại để nạp nhiều dữ liệu hơn – đơn giản là dừng lại cho tới khi nó kết thúc. Những khóa đồng bộ này cần một thời gian lớn để cài đặt và được cho là rào cản chính trong việc tăng tốc độ trong tương lai. Một thiết kế chủ chốt trong MIPS là yêu cầu tất cả các câu lệnh phải được hoàn thành trong 1 chu kỳ xung nhịp, nhờ thế loại bỏ được sự cần thiết của khóa đồng bộ. Mặc dù thiết kế này đã loại trừ một số câu lệnh hữu dụng, đáng kể nhất như là các lệnh nhân và chia yêu cầu nhiều bước, nhưng nó cho thấy hiệu suất tổng thể của hệ thống tăng lên rõ rệt bởi vì các vi xử lý có thể chạy ở xung nhịp lớn hơn rất nhiều. Tuy nhiên việc loại bỏ các câu lệnh trên lại không được các nhà thiết kế thời bấy giờ hoan nghênh. Rất nhiều ý kiến cho rằng thiết kế kiểu đường ống lệnh sẽ không thể tồn tại được, nếu chỉ thay một lệnh nhân phức tạp bằng rất nhiều các lệnh cộng đơn giản thì làm sao hệ thống có thể nhanh hơn được. Tuy nhiên thực tế đã cho thấy, tốc độ thuộc về thiết kế đường ống, chứ không phải thiết kế theo câu lệnh.
Năm 1984, Hennessy rời trường đại học Stanford để thành lập công ty MIPS Computer System. Họ đã cho ra đời thiết kế đầu tiên vào năm 1985 : R2000 sau đó phát triển tiếp R3000 vào năm 1998. Những CPU 32 bit này tồn tại trong suốt những năm 1980 và được sử dụng chủ yếu trong ác dòng máy chủ SGI.
Năm 1991 MIPS cho ra đời bộ vi xử lý 64 bit đầu tiên R4000. Tuy nhiên MIPS gặp khó khăn trong tài chính trong khi tung sản phẩm này ra thị trường. Thiết kế này rất quan trọng đối với SGI-một trong những khách hàng của MIPS lúc bấy giờ, vì thế SGI đã mua lại công ty vào năm 1992 để bảo vệ thiết kế không bị mất đi. Từ đó MIPS trở thành một công ty con của SGI và được biết đến bởi tên MIPS Technologies.
Các dòng vi xử lý thương mại MIPS đã được sản xuất:
+) R2000 : xuất hiện trên thị trường vào năm 1985, được bổ sung thêm nhiều câu lệnh mới, có thể được khởi tạo ở chế độ big-endian hay little-endian,c ó 32 thanh ghi 32 bit, nhưng không có thanh ghi mã điều kiện. R2000 cũng hỗ trợ tới 4 bộ xử lý, một trong số đó đảm nhiệm việc xử lý các ngoại lệ và bẫy trong khi ba chiếc còn lại sử dụng cho các mục đích khác. Điều này được hỗ trợ trong R2010 FTU - bộ xử lý có 32 thanh ghi 32 bit có thể được sử dụng như là 16 thanh ghi 64 bit cho kết quả chính xác gấp đôi
+) R3000: Theo sau R2000 vào năm 1998, nó bổ sung thêm 32kB Cache (và sớm được tăng lên 64kB) cho các lệnh và dữ liệu, kèm theo đó là cơ chế cache coherency hỗ trợ cho nhiều bộ xử lý. R3000 cũng bao gồm MMU - một tính năng phổ biến của CPUs kỷ nguyên này. R3000 trở thành thiết kế MIPS đầu tiên thành công trong lĩnh vực thương mại. R3000A được sử dụng cực kỳ thành công trong các máy Sony PlayStation, chạy với tốc độ 40 MHz, truyền thông tin ở tốc độ 32 câu lệnh trong 1 giây. R3000 cũng đi kèm với R3100 FTU trong cùng một chip đơn. Các hãng khác cũng tham gia sản xuất như Pacemips với R3400, IDT với R3500. R3900 của Toshiba là chíp đầu tiên dạng SoC (System on a Chip) được sử dụng trong các máy tính cá nhân cầm tay sử dụng hệ điều hành Windows CE
+) R4000: được đưa ra vào năm 1991, mở rộng tập lệnh MIPS để hỗ trợ đầy đủ kiến trúc 64 bit, chuyển FTU vào main để tạo ra một hệ thống chip đơn lẻ (Single-chip system), xử lý với tốc độ lên tới 100Mhz, tuy nhiên để đạt được tốc độ này bộ nhớ đệm phải bị giảm xuống còn 8kB và cần 3 chu kỳ để truy cập. Tần số xử lý cao đạt được nhờ việc lưu trữ thông qua công nghệ đường ống sâu (deep pipelining – hay còn gọi là super-pipelining tại thời điểm đó). 1993 R4400 xuất hiện với 16kB cache, bộ xử lý 64 bit lớn và 1 bộ điều khiển cache mở rộng lên tới 1MB (cahe level 2). Ngoài ra còn các họ R4200, R4300, VR4300, R4300i, R4600 “Orion”, R4700 “Orion”, R5650, R5000, R5000FTU, RM7000, RM9000... Các bộ xử lý này được sử dụng rất rộng rãi : Các máy Nitendo 64, Cisco routers, WebTV set-top Box (Hiện nay là Micrisoft TV)…
+) R8000 (1994) : Là thiết kế MIPS siêu vô hướng (superscala) đầu tiên, cho phép xử lý 2 ALU và 2 phép tính nhớ mỗi chu kỳ. Thiết kế này mở rộng tới 6 chip, hỗ trợ 4MB cache mở rộng.
+) R10000 (1995) : Là một thiết kế chip đơn lẻ, chạy ở tốc độ cao hơn R8000, có 32kB cache chính cho các câu lệnh và dữ liệu. Các thiết kế tiếp theo của R1000 là R12000 và R14000 với hỗ trợ DDR SRAM trong cache và tốc độ lên tới 200 MHz. Ngoài ra còn các thiết kế R16000, R16000A, R6000.
MIPS R3000A-compatible (R3051) 32bit RISC chip running at 33.8688 MHzThe chip is manufactured by LSI Logic Corp. with technology licensed from SGI. The chip also contains the Geometry Transformation Engine and the Data Decompression Engine.Features:Operating Performance of 30 MIPSBus Bandwidth 132 MB/sInstruction Cache 4 KBData Cache 1 KB (non associative, just 1024 bytes of mapped fast SRAM)
-------------------------------------
Mẫu bộ vi sử lý MIPS ứng dụng trong máy PlayStation2