kieÁn truÙc maÙy tÍnh tieÂn...

20

Upload: vokhuong

Post on 29-Jun-2018

215 views

Category:

Documents


0 download

TRANSCRIPT

KIEÁN TRUÙC MAÙY TÍNH

TIEÂN TIEÁN

HOÏC VIEÄN COÂNG NGHEÄ BÖU CHÍNH VIEÃN THOÂNG

TS. TRAÀN COÂNG HUØNG

KIEÁN TRUÙC MAÙY TÍNH TIEÂN TIEÁN

NHAØ XUAÁT BAÛN THOÂNG TIN VAØ TRUYEÀN THOÂNG

LÔØI NOÙI ÑAÀU

Máy tính, còn gọi là máy vi tính hay điện toán, là những thiết bị hay hệ thống dùng để tính toán hay kiểm soát các hoạt động mà có thể biểu diễn dưới dạng số hay quy luật logic.

Máy tính điện tử ra đời vào năm 1946 tại Hoa Kỳ từ đó đã phát triển rất mạnh và đến nay đã trải qua các thế hệ máy.

- Thế hệ 1 (thập niên 50): Dùng bóng điện tử chân không, tiêu thụ năng lượng rất nhiều. Kích thước máy rất lớn (khoảng 250 m2) nhưng tốc độ xử lý lại rất chậm chỉ đạt khoảng vài ngàn phép tính trên giây và giá thành lại rất cao.

- Thế hệ 2 (thập niên 60): Các bóng điện tử đã được thay bằng các bóng làm bằng chất bán dẫn nên năng lượng tiêu thụ giảm, kích thước nhỏ hơn nhưng vẫn rất lớn (50 m2), tốc độ xử lý đạt khoảng vài chục ngàn phép tính trên giây.

- Thế hệ 3 (thập niên 70): Thời gian này đánh dấu sự ra đời và phát triển của công nghệ vi mạch tích hợp IC. Máy tính có kích thước nhỏ gọn hơn và tiêu thụ năng lượng ít hơn, tốc độ xử lý đạt khoảng vài trăm ngàn phép tính trên giây.

- Thế hệ 4 (thập niên 80): Dùng công nghệ vi mạch tích hợp IC nhưng nhỏ gọn hơn mà tốc độ tính toán lại cao hơn nhờ các công nghệ ép vi mạch tiên tiến. Có nhiều loại máy để phục vụ cho nhiều mục đích sử dụng, trong đó chia ra làm 3 loại chính: main frame computer, mini computer, micro computer.

- Thế hệ 5: là thế hệ máy tính hiện nay, được tập trung phát triển về nhiều mặt nhằm nâng cao tốc độ xử lý và tạo thêm nhiều tính năng cho máy. Các máy tính hiện nay có thể xử lý hàng chục tỷ phép tính trên giây. Trong quyển sách này, chúng ta sẽ nghiên cứu và khảo sát về tổ chức, hoạt

động của máy tính gọi là tiên tiến vào thời điểm hiện nay. Nội dung cuốn sách gồm 6 chương:

Chương 1: Giới thiệu chung. Chương 2: Khối xử lý song song ở mức lệnh máy. Chương 3: Các hạn chế khi thực hiện lệnh song song. Chương 4: Các kiến trúc đa xử lý. Chương 5: Các vi xử lý thực tế. Chương 6: Kiến trúc bộ nhớ tiên tiến.

Hy vọng quyển sách sẽ thực sự hữu ích đối với các sinh viên và giảng viên nhóm ngành kỹ thuật điện tử - máy tính, có thể sử dụng quyển sách này làm giáo trình giảng dạy và học tập cho môn học cấu trúc máy tính. Ngoài ra, quyển sách cũng là tài liệu tham khảo để phục vụ cho các kỹ sư và nghiên cứu sinh trong công tác chuyên môn.

Trong quá trình biên soạn, mặc dù đã có nhiều cố gắng nhưng khó tránh khỏi những thiếu sót, rất mong nhận được sự cảm thông và ý kiến đóng góp của quý vị độc giả để lần tái bản sẽ bổ sung hoàn chỉnh hơn. Mọi ý kiến đóng góp xin gửi qua e-mail: [email protected].

Tác giả

MUÏC LUÏC

Lời nói đầu ..................................................................................................................5 Thuật ngữ viết tắt ......................................................................................................11

Chöông 1: GIÔÙI THIEÄU CHUNG..........................................................13 1.1. Giới thiệu .......................................................................................................13 1.2. Nhu cầu tính toán hiện tại và phân loại máy tính ..........................................16

1.2.1. Máy tính để bàn .....................................................................................17 1.2.2. Máy chủ .................................................................................................17 1.2.3. Máy tính nhúng (Embedded computer) .................................................19 1.2.4. Định nghĩa kiến trúc máy tính ...............................................................20 1.2.5. Kiến trúc tập lệnh...................................................................................20

1.3. Các xu hướng công nghệ ...............................................................................26 1.3.1. Các xu hướng về hiệu suất: Băng thông trên độ trễ ...............................28 1.3.2. Tỉ lệ của hiệu suất bán dẫn và dây .........................................................28 1.3.3. Xu hướng năng lượng trên các mạch tích hợp.......................................30

1.4. Sơ lược về một số kiến trúc máy tính hiện đại ..............................................32 1.4.1. Ưu điểm của tính song song...................................................................32 1.4.2. Nguyên tắc của vùng..............................................................................33 1.4.3. Tập trung vào các trường hợp chung .....................................................33 1.4.4. Luật Amdahl ..........................................................................................34 1.4.5. Phương trình hiệu suất của bộ vi xử lý ..................................................37 1.4.6. Nghiên cứu trường hợp 1: Chi phí chế tạo Chip....................................40 1.4.7. Nghiên cứu trường hợp 2: Điện năng tiêu thụ trong hệ thống máy tính ..42 1.4.8. Nghiên cứu trường hợp 3: Chi phí cho các máy chủ web .....................44 1.4.9. Nghiên cứu trường hợp 4: Hiệu suất......................................................46

Chöông 2: KHOÁI XÖÛ LYÙ SONG SONG ÔÛ MÖÙC LEÄNH MAÙY.........................49 2.1. Kỹ thuật đường ống và xử lý song song ở mức lệnh máy.............................49

2.1.1. Kỹ thuật đường ống là gì? Và cách triển khai kỹ thuật đường ống .......49 2.1.2. Các khó khăn khi sử dụng đường ống và cách khắc phục .....................52

8 Kiến trúc máy tính tiên tiến

2.2. Kết hợp xử lý song song ở mức lệnh máy và giải pháp phần mềm về ILP.....59 2.2.1. Chương trình dịch và kỹ thuật đường ống .............................................59 2.2.2. Hỗ trợ phần cứng đối với chương trình dịch .........................................65

2.3. Lưu trữ dựa trên phần cứng ...........................................................................90 2.4. Khai thác ILP sử dụng đa phát và lập lịch tĩnh ...........................................100 2.5. Triển khai ILP dùng lập lịch động, đa phát và sự lưu trữ............................105 2.6. Các kỹ thuật nâng cao cho việc phân phối lệnh và sự lưu trữ .....................108

2.6.1. Tăng băng thông lấy lệnh.....................................................................108 2.6.2. Bộ đệm nhánh mục tiêu .......................................................................108 2.6.3. Trả về các địa chỉ dự báo .....................................................................112

Chöông 3: CAÙC HAÏN CHEÁ KHI THÖÏC HIEÄN LEÄNH SONG SONG ............. 114 3.1. Giới thiệu .....................................................................................................114 3.2. Nghiên cứu hạn chế của ILP .......................................................................114

3.2.1. Mô hình phần cứng ..............................................................................115 3.2.2. Những hạn chế trên kích thước cửa sổ và đếm phát cực đại ...............117 3.2.3. Những ảnh hưởng của nhánh thực và các bước dự báo .......................121 3.2.4. Những ảnh hưởng của các thanh ghi hữu hạn......................................123 3.2.5. Những ảnh hưởng của sự phân tích alias không hoàn hảo ..................125 3.2.6. Hạn chế ILP đối với bộ vi xử lý...........................................................127 3.2.7. Những hạn chế phát sinh......................................................................130

3.3. Xử lý song song ở mức luồng (thread)........................................................132 3.4. Hiệu suất và hiệu quả trong bộ vi xử lý tiên tiến.........................................134 3.5. Khả năng thực hiện lệnh song song và sự phụ thuộc ..................................138 3.6. Kết luận .......................................................................................................145

Chöông 4: CAÙC KIEÁN TRUÙC ÑA XÖÛ LYÙ .............................................. 146 4.1. Giới thiệu về đa xử lý đa nhân ....................................................................146 4.2. Phân loại các kiến trúc song song................................................................147 4.3. Các kiến trúc chia sẻ bộ nhớ........................................................................152

4.3.1. Các kiến trúc chia sẻ bộ nhớ đối xứng.................................................155 4.3.2. Các kiến trúc chia sẻ bộ nhớ phân tán .................................................170

4.4. Bộ nhớ chia sẻ phân tán và liên kết dựa trên thư mục.................................182 4.4.1. Các giao thức liên kết cache dựa vào thư mục ....................................183 4.4.2. Ví dụ về Directory Protocol.................................................................187

Mục lục 9

4.5. Khái niệm cơ bản về đồng bộ hóa ...............................................................190 4.5.1. Các Primitive phần cứng cơ bản ..........................................................191 4.5.2. Thực hiện khóa (lock) sử dụng gắn kết (coherence)............................193

4.6. Giới thiệu tính thống nhất mô hình bộ nhớ .................................................196 4.6.1. Quan niệm của Lập trình viên (Programmer) ......................................198 4.6.2. Các khái niệm cơ bản về mô hình nghỉ ngơi nhất quán.......................198 4.6.3. Nhận xét về các mô hình nhất quán .....................................................199

4.7. Các vấn đề xuyên suốt (Crosscutting issue) ................................................200 4.7.1. Tối ưu hóa, trình biên dịch và mô hình nhất quán ...............................200 4.7.2. Sử dụng dự đoán ẩn trễ trong các mô hình nhất quán nghiêm ngặt.....200 4.7.3. Kết luận và sự thực thi của nó..............................................................201

4.8. Kiến trúc đa xử lý cụ thể Sun T1.................................................................202 4.8.1. Hiệu suất T1 .........................................................................................203 4.8.2. Hiệu suất toàn phần..............................................................................206 4.8.3. Hiệu suất của những bộ xử lý đa lõi trên chuẩn SPEC........................208

4.9. Những vấn đề cần lưu ý...............................................................................210 4.9.1. Lưu ý 1 .................................................................................................210 4.9.2. Lưu ý 2 .................................................................................................211 4.9.3. Lưu ý 3 .................................................................................................212 4.9.4. Lưu ý 4 .................................................................................................213 4.9.5. Lưu ý 5 .................................................................................................214

4.10. Kết luận .....................................................................................................215

Chöông 5: CAÙC VI XÖÛ LYÙ THÖÏC TEÁ................................................... 217 5.1. Very-Long Instruction Word (VLIW).........................................................217

5.1.1. Giới thiệu .............................................................................................217 5.1.2. Khả năng thực hiện lệnh song song (ILP) ...........................................217 5.1.3. VLIW ...................................................................................................218 5.1.4. Tổ chức của VLIW processor ..............................................................220 5.1.5. Ưu, khuyết điểm của bộ xử lý VLIW ..................................................221 5.1.6. Tóm tắt .................................................................................................222

5.2. Kiến trúc máy chủ Sun Sparc MX000 - M5000..........................................222 5.2.1. Giới thiệu về dòng máy chủ doanh nghiệp MX000.............................222 5.2.2. Kiến trúc chung của máy chủ M5000 ..................................................223

10 Kiến trúc máy tính tiên tiến

5.2.3. Bộ nhớ..................................................................................................224 5.2.4. Kiến trúc Bus của hệ thống..................................................................226 5.2.5. Bộ xử lý SPARC64 VII .......................................................................227 5.2.6. Lõi (Core).............................................................................................227 5.2.7. Hệ thống Cache....................................................................................228 5.2.8. Kiến trúc I/O ........................................................................................229

5.3. Công nghệ Centrino trong các CPU ............................................................229 5.3.1. Lịch sử phát triển Centrino ..................................................................229 5.3.2. Centrino thế hệ đầu tiên .......................................................................230 5.3.3. Centrino thế hệ thứ hai: “Sonoma” ......................................................230 5.3.4. Centrino thế hệ thứ ba: “Napa”............................................................231 5.3.5. Centrino hế hệ thứ tư: “Santa Rosa”....................................................232

5.4. Những công nghệ ứng dụng trên nền tảng Intel Centrino 2 ........................235 5.4.1. Bộ vi xử lý Intel Core 2 Duo ...............................................................235 5.4.2. Họ chipset Mobile Intel® 965 Express................................................237 5.4.3. Hệ thống kết nối Intel WiFi Link 5000 Series.....................................237 5.4.4. Hệ thống kết nối mạng Intel® 82567 Gigabit .....................................238 5.4.5. Chuyển đổi giữa đồ họa tích hợp và đồ họa rời ...................................238 5.4.6. Công nghệ bộ nhớ Intel® Turbo Memory...........................................239 5.4.7. Kết luận ................................................................................................239

Chöông 6: KIEÁN TRUÙC BOÄ NHÔÙ TIEÂN TIEÁN ....................................... 240 6.1. Một số kiểu tổ chức bộ nhớ tốc độ cao........................................................240

6.1.1. Các loại bộ nhớ ....................................................................................240 6.1.2. Các cấp bộ nhớ.....................................................................................243

6.2. Các công nghệ bộ nhớ tiên tiến ...................................................................244 6.3. Bộ nhớ Cache tiên tiến ................................................................................244

6.3.1. Vận hành của Cache.............................................................................244 6.3.2. Hiệu quả của Cache .............................................................................251 6.3.3. Cache duy nhất hay Cache riêng lẻ ......................................................252 6.3.4. Các mức Cache ....................................................................................252 6.3.5. Bộ nhớ trong ........................................................................................253

6.4. Hỗ trợ bộ nhớ ảo..........................................................................................255 6.5. Bảo vệ các tiến trình bằng cách dùng bộ nhớ ảo.........................................259

THUAÄT NGÖÕ VIEÁT TAÉT

BTB Branch Target Buffer

CDB Common Data Bus

COD Computer Organization and Design

CPI Clock cycles Per Instruction

DLP Data-Level Parallelism

DSM Distributed Shared Memory

DSS Decision Support System

FP Floating Point

FPSQR FP Square Root

HPF High Performance Fortran

IC Instruction Count

ID Instruction Decode

ILP Instruction-Level Parallelism

IPC Instructions Per Clock

ISA Instruction Set Architecture

LLP Loop-Level Parallelism

MIMD Multiple Instruction stream, Multiple Data stream

MIPS Million Instructions Per Second

MISD Multiple Instruction stream, Single Data stream

12 Kiến trúc máy tính tiên tiến

NUMA Non-Uniform Memory Access

OLTP OnLine Transaction Processing

RAW Read After Write

ROB Reorder Buffer

SIMD Single Instruction stream, Multiple Data stream

SISD Single Instruction stream, Single Data stream

SMP Symmetric Multi-Processing

SPECJBB the SPEC Java Business Benchmark

ST Single-Thread

TLP Thread-Level Parallelism

UMA Uniform Memory Access

VLIW Very-Long Instruction Word

WAR Write After Read

WAW Write After Write

Chương 1

GIÔÙI THIEÄU CHUNG

1.1. Giới thiệu Công nghệ máy tính đã có tiến bộ đáng kinh ngạc trong khoảng 60 năm trở lại

đây kể từ khi chiếc máy tính điện tử vì mục đích chung đầu tiên ra đời. Ngày nay, ít hơn 500 đô la, bạn cũng sẽ sở hữu một chiếc máy tính cá nhân với nhiều chức năng hơn, bộ nhớ nhiều hơn và dung lượng đĩa lớn hơn một máy tính được mua với giá 1.000.000 đô la Mỹ trong năm 1985. Điều này đã cải thiện nhanh chóng từ những tiến bộ trong công nghệ sử dụng để xây dựng máy tính và trong sự đổi mới thiết kế máy tính.

Mặc dù những cải tiến công nghệ đã khá ổn định, nhưng cấu trúc arising từ những kiến trúc tốt hơn lại ít tương thích hơn. Suốt 25 năm đầu phát triển của máy tính điện tử, cả 2 lực lượng này đã có đóng góp quan trọng, cải thiện hiệu suất khoảng 25% một năm. Và cuối năm 1970 chứng kiến sự xuất hiện của bộ vi xử lý này. Khả năng của bộ vi xử lý đã góp phần cải tiến trong công nghệ mạch tích hợp làm cho tính tương thích cao hơn - tăng khoảng 35% một năm trong việc cải thiện hiệu suất. Với tốc độ tăng trưởng này, kết hợp với những lợi ích trong chi phí sản xuất hàng loạt vi xử lý, dẫn đến có ngày càng nhiều các công ty kinh doanh máy tính dựa trên những bộ vi xử lý này. Ngoài ra, hai thay đổi đáng kể trong thị trường máy tính đã làm cho nó dễ dàng hơn bao giờ hết (trước đó đã thương mại hóa thành công một công nghệ mới). Đầu tiên, việc loại bỏ thực sự hợp ngữ đã giảm sự cần thiết trong tính tương thích của mã đối tượng. Thứ hai, việc tạo ra các chuẩn hóa, độc lập cung cấp các hệ điều hành, chẳng hạn như UNIX và nhân bản của nó, Linux, đã hạ thấp cả chi phí và lẫn nguy cơ lệch ra khỏi một kiến trúc mới.

Những thay đổi này đã làm cho nó có thể phát triển thành công một tập hợp các kiến trúc mới với các tập lệnh đơn giản, được gọi là những kiến trúc RISC (Reduced Instruction Set Computer) vào đầu những năm 1980. Các máy dựa trên RISC tập trung sự chú ý của những nhà thiết kế trên hai kỹ thuật quan trọng, thứ nhất là khai thác thuật toán xử lý song song (ban đầu thông qua đường ống (pipelining) lệnh và sau đó thông qua nhiều tác vụ) và thứ hai là sử dụng cache (ban đầu trong các hình thức đơn giản và sau đó sử dụng theo nhiều cách thức tinh vi hơn và được tối ưu hóa). Các máy tính nền tảng RISC nâng thanh chắn thực hiện, buộc

14 Kiến trúc máy tính tiên tiến

những kiến trúc trước phải theo kịp hoặc biến mất. Thiết bị số Vax đã không thể đứng vững, tất yếu nó được thay thế bởi một kiến trúc RISC. Intel đã nổi lên như một thách thức, trước tiên là việc chuyển đổi các lệnh x86 (hay IA-32) sang các lệnh như của RISC, cho phép nó chấp nhận nhiều đổi mới trong việc đi đầu thiết kế RISC. Cùng với sự tăng vọt của những bộ đếm trazito vào cuối thập niên 90, chi phí phần cứng cho việc chuyển đổi sang nền tảng x86 phức tạp hơn đã trở nên không đáng ngại. Hình 1.1 cho thấy sự kết hợp giữa kiến trúc và cải tiến kết cấu đã dẫn tới 16 năm tăng trưởng bền vững trong hoạt động, với tỉ lệ hằng năm trên 50%, một con số chưa từng có trong nền công nghiệp máy tính. Hiệu quả của tốc độ tăng trưởng ấn tượng này trong thế kỷ 20 đã được nhân lên gấp bội.

Đầu tiên, nó đã nâng cao đáng kể khả năng sẵn có của những người sử dụng máy vi tính. Đối với nhiều ứng dụng, các bộ vi xử lý hiệu suất cao nhất hiện tại tốt hơn các siêu máy tính của không ít hơn 10 năm trước.

Hình 1.1: Sự cải thiện trong hiệu suất vi xử lý từ giữa thập niên 1980 đến nay. Biểu đồ này thể hiện tương đối so với VAX 11/780 được đo bởi tiêu chuẩn SPECint. Chưa đến giữa những năm 1980, sự tăng trưởng về hiệu năng bộ xử lý của phần lớn công nghệ đã được thể hiện và trung bình khoảng 25% mỗi năm. Tốc độ tăng trưởng lên khoảng 52% tiếp sau đó, là do những ý tưởng về kiến trúc và tổ chức được nâng cao hơn. Đến năm 2002, tăng trưởng này đã có một sự khác biệt trong hiệu suất vì có một đơn vị thực thi thứ bảy. Hiệu suất tính toán theo hướng dấu chấm động tăng lên thậm chí là nhanh hơn. Từ năm 2002, giới hạn về công suất nguồn, các thuật toán xử lý song song sẵn có và độ trễ

Chương 1: Giới thiệu chung 15

của bộ nhớ đã làm các đơn xử lý chạy chậm lại trong gần đây, xuống còn 20% một năm. Một khi SPEC đã thay đổi trong nhiều năm, hiệu suất của những chiếc máy mới hơn được đánh giá qua một hệ số tỉ lệ xích mà có sự liên hệ hiệu suất cho hai phiên bản SPEC khác (ví dụ, SPEC92, SPEC95 và SPEC2000).

Thứ hai, cải thiện đến tỉ lệ như mơ này đã dẫn tới sự thống trị của máy tính dựa trên bộ vi xử lý với phạm vi là toàn bộ ngành thiết kế máy tính. Những chiếc PC và những máy trạm chiếm lĩnh toàn bộ thị trường trong ngành công nghiệp máy tính. Những máy tính mini, theo truyền thống làm từ những ngăn (shelf) luận lý với những dãy cổng logic đã được thay thế bởi những máy chủ sử dụng vi xử lý. Những máy tính lớn gần như hoàn toàn được thay thế bằng đa xử lý bao gồm nhiều vi xử lý. Ngay cả những siêu máy tính cũng đang được xây dựng bằng tập hợp các bộ vi xử lý. Những đổi mới này đã tạo ra một sự phục hưng trong thiết kế máy tính, trong đó đề cao sự đổi mới cả hai kiến trúc và sử dụng hiệu quả những cải tiến công nghệ. Điều này tạo ra một sự tăng trưởng kép cho đến năm 2002, hiệu suất cao của các vi xử lý nhanh hơn cỡ 7 lần những gì đã thu được bằng việc chỉ dựa vào công nghệ, đã bao gồm cải thiện mạch thiết kế.

Tuy nhiên, sự phục hưng này chỉ tồn tại trong vòng 16 năm mà thôi. Từ năm 2002, việc cải tiến hiệu suất bộ vi xử lý đã giảm xuống còn 20% một năm, do 3 trở ngại lớn sau: sự tiêu hao của công suất cực đại qua làm mát, còn ít các thuật toán xử lý song song để tận dụng và gần như không cải thiện độ trễ bộ nhớ. Chính vì vậy, trong năm 2004 Intel đã hủy bỏ dự án nâng cao hiệu suất các đơn vị xử lý của mình, gia nhập IBM và SUN trong một tuyên bố rằng con đường để nâng cao hiệu suất là phải có đa xử lý trên mỗi chip hơn là đơn xử lý. Điều này đã báo hiệu một sư chuyển đổi có tính chất lịch sử từ thuật toán xử lý song song, sang trạng thái Khả năng thực hiện luồng song song (TLP) và trạng thái Khả năng thực hiện dữ liệu song song (DLP), được đặc trưng trong phần này của quyển sách. Trong khi các trình biên dịch và các phần cứng khai thác ILP mà hoàn toàn không cần lập trình tác động vào, thì DLP và TLP là song song tách biệt nhau, đòi hỏi lập trình viên phải viết mã xử lý song song để cải thiện hiệu suất.

Phần này nói về những ý tưởng về kiến trúc và những cải tiến trình biên dịch đi kèm để đạt được những tốc độ như thế trong thế kỷ qua, nguyên nhân của sự thay đổi đáng kể đó và những thách thức cũng như phương pháp tiếp cận độc đáo ban đầu nhằm đạt đến các ý tưởng về kiến trúc và trình biên dịch trong thế kỷ 21. Cốt lõi của vấn đề đó là cần định lượng vấn đề cần đạt đến khi thiết kế, sau đó phân tích có sử dụng các quan sát thực nghiệm, chạy thử nghiệm, đặc biệt mô phỏng các công cụ liên quan của nó. Đây là phong cách và phương pháp tiếp cận để thiết kế mạch trong quyển sách này. Chúng ta tin rằng phương pháp tiếp cận này sẽ cho ra những máy tính song song rõ ràng trong tương lai như những máy tính hoàn toàn song song trong quá khứ.

16 Kiến trúc máy tính tiên tiến

1.2. Nhu cầu tính toán hiện tại và phân loại máy tính

Trong thập niên 60, hình thức tính toán được thực hiện trên những máy tính cỡ lớn, với giá hàng triệu đô la được đặt trong những phòng máy với nhiều khai thác viên giám sát hỗ trợ. Ứng dụng tiêu biểu là xử lý các dữ liệu kinh doanh và tính toán trên quy mô lớn. Những năm 1970 chứng kiến sự ra đời của máy tính mini, một máy tính có kích thước nhỏ hơn, bước đầu được ứng dụng trong các phòng thí nghiệm khoa học, nhưng nhanh chóng được chia sẻ phổ biến, nhiều người sử dụng chia sẻ trên một máy tính tương tác thông qua các thiết bị đầu cuối độc lập. Thập kỷ này cũng chứng kiến sự xuất hiện của các siêu máy tính, với hiệu suất xử lý cao phục vụ cho tính toán khoa học. Mặc dù ít về số lượng, nhưng đây là sự kiện có tính chất lịch sử quan trọng, bởi họ đã đi tiên phong trong đổi mới mà sau này hình thành các lớp máy tính ít tốn kém hơn. Thập niên 80 chứng kiến sự trỗi dậy của máy tính để bàn dựa trên các bộ vi xử lý, dưới cả 2 hình thức máy tính cá nhân và máy trạm. Các máy tính để bàn cá nhân thay thế việc sử dụng đồng thời, làm cho các máy chủ-trạm gia tăng, cung cấp dịch vụ trên quy mô lớn hơn: đáng tin cậy, lâu dài, lưu trữ và truy cập các tập tin, bộ nhớ lớn hơn và thể hiện sức mạnh của khả năng tính toán. Những năm 1990 Internet nổi lên và World Wide Web ra đời, chứng kiến những thành công đầu tiên của các thiết bị cầm tay (các thiết bị cá nhân hỗ trợ kỹ thuật số hay PDAs).

Đặc điểm Desktop Server Hệ thống nhúng

Giá của hệ thống 500 USD – 5.000 USD 5.000 USD – 5.000.000 USD

10 USD – 100.000 USD (bao gồm cả bộ định tuyến mạng cao cấp)

Giá của module vi xử lý

50 USD – 500 USD (trên mỗi bộ vi xử lý)

200 USD – 10.000 USD (trên mỗi bộ vi xử lý)

0,01 USD – 100 USD (trên mỗi bộ vi xử lý)

Thiết kế hệ thống các vấn đề quan trọng

Giá-hiệu suất, hiệu năng đồ họa

Thông lượng, tính sẵn có, khả năng mở rộng

Giá, mức tiêu thụ điện năng, hiệu năng đối với từng ứng dụng cụ thể

Bảng 1.1: Tóm tắt 3 loại máy tính chính thống và những đặc điểm của nó. Lưu ý phạm vi giá hệ thống các máy chủ và hệ thống nhúng. Đối với các máy chủ, phạm vi này xuất phát từ sự cần thiết phải có hệ thống đa xử lý quy mô lớn cho các tiến trình giao dịch cấp cao và những ứng dụng máy chủ Web. Tổng số vi xử lý nhúng đã bán trong năm 2005 được ước tính là trên 3 tỉ, chỉ bao gồm các vi xử lý 8-bit và 16-bit. Khoảng chừng 200 triệu máy để bàn và 10 triệu máy chủ đã được bán trong năm 2005.

Và sự xuất hiện của các đồ dùng điện tử kỹ thuật số hiệu năng cao, từ trò chơi video đến các bộ giải mã (set-top box). Điện thoại di động cũng trở nên phổ biến từ năm 2000, với những cải tiến từ chức năng đến giá cả, vượt xa những chiếc máy

Chương 1: Giới thiệu chung 17

tính. Những ứng dụng gần đây sử dụng hệ thống nhúng, máy tính được tích hợp trong các thiết bị khác, nhưng sự xuất hiện của chúng không rõ ràng.

Những xu hướng này đã tạo ra một tiền đề cho một sự thay đổi mạnh mẽ về tầm nhìn của máy tính, các ứng dụng trên máy tính và thị trường máy tính trong một thời kỳ mới. Không phải chỉ đơn thuần sản xuất ra một máy tính cá nhân mạnh hơn 20 năm trước đây, mà chúng ta cần phải thấy rằng những thay đổi đáng kể đó là do bởi cách thức mà máy tính xuất hiện và cách thức mà người ta sử dụng nó. Những thay đổi trong việc sử dụng máy tính đã dẫn đến hình thành 3 thị trường máy tính khác nhau, mỗi đặc trưng tương ứng với những ứng dụng, yêu cầu và những công nghệ khác nhau. Bảng 1.1 tóm tắt các loại máy tính chủ đạo trong thị trường máy tính và những đặc điểm quan trọng của mỗi loại.

1.2.1. Máy tính để bàn

Những chiếc máy tính để bàn được nâng cấp từ cấp thấp đến cấp cao chỉ với 500 USD và nhiều máy trạm được cấu hình phức tạp chỉ với 3.000 USD. Trong thời gian này thị trường máy tính đã có sự cân bằng theo hướng giá cả phù hợp với hiệu năng. Điều này kết hợp giữa hiệu suất (được tính toán theo hiệu suất của máy và hiệu năng đồ họa) và giá của hệ thống tương ứng đó nhằm đáp ứng nhu cầu khách hàng và phát triển thiết kế. Và kết quả là, bộ vi xử lý mới nhất, hiệu suất cao nhất và cả giá cạnh tranh nhất đã xuất hiện trong hệ thống của máy để bàn. Máy tính để bàn cũng có những xu hướng phát triển riêng và có các ứng dụng đặc trưng theo một chuẩn nhất định, mặc dù có ngày càng nhiều các trung tâm mạng, thường xuyên chạy các ứng dụng mới để đánh giá hiệu năng.

1.2.2. Máy chủ

Trong quá trình chuyển dịch sang máy tính để bàn, vai trò của các máy chủ phải có quy mô và độ tin cậy hơn để đáp ứng một khối dữ liệu lớn và tăng tốc dịch vụ. WWW có xu hướng phát triển sâu rộng do nhu cầu phát triển và sự bùng nổ các dịch vụ trên Web. Và các máy chủ như vậy đã trở thành xương sống của doanh nghiệp phục vụ tính toán trên quy mô lớn, thay thế cho các máy tính lớn truyền thống.

Đối với những máy chủ, có những đặc điểm khác nhau quan trọng. Thứ nhất, độ tin cậy là hàng đầu. Khảo sát các server của Google, nhận đơn đặt hàng cho Cisco, hoặc hệ thống đấu giá Ebay. Lỗi hệ thống máy chủ là điều cực kỳ tệ hại hơn rất nhiều so với lỗi một máy cá nhân thông thường, bởi server hoạt động nguyên ngày, nguyên tuần, không ngơi nghỉ. Bảng 1.2 đánh giá doanh thu bị mất vì thời gian chết trong năm 2000. Amazon đã mất ước chừng 2,98 tỉ đô la trong quý đầu năm 2005. Nếu như có khoảng 2.200 giờ trong quý đó thì ước chừng doanh thu mỗi giờ là 1.350.000 đô la. Nếu là giờ cao điểm trong dịp Giáng sinh thì con số này cao hơn nhiều.

18 Kiến trúc máy tính tiên tiến

Như vậy, chi phí ước tính bị mất sẽ cao, như bảng 1.2 và các con số của Amazon là hoàn toàn bị mất doanh thu, không kể đến năng suất của người làm bị mất và cả những phiền toái của khách hàng.

Một tính năng quan trọng thứ hai đó là hệ thống máy chủ phải có khả năng mở rộng. Phát triển của các máy chủ thường để đáp ứng những nhu cầu ngày càng tăng của các dịch vụ mà nó hỗ trợ hoặc yêu cầu tăng lên về chức năng. Bởi vậy, khả năng tăng lên về công suất, bộ nhớ, khả năng lưu trữ và các băng thông I/O của server là rất quan trọng.

Cuối cùng, các máy chủ phải được thiết kế sao cho đạt hiệu quả nhất về thông lượng. Tức là, xét về hiệu quả tổng thể của mỗi máy chủ, chẳng hạn như số giao dịch thực hiện trong một phút hay số trang phục vụ được cùng một lúc.

Tổn thất hàng năm trong thời gian chết của hệ thống

Ứng dụng Chi phí trên mỗi giờ 1% 0,5% 0,1%

($ = đô la) (87,6 giờ/năm) (43,8 giờ/năm) (8,8 giờ/năm)

Hoạt động môi giới $6.450 $565 $283 $56,5

Giao dịch bằng thẻ tín dụng $2.600 $228 $114 $22,8

Dịch vụ vận chuyển $150 $13 $6,6 $1,3

Kênh mua sắm tại nhà $113 $9,9 $4,9 $1,0

Trung tâm mua bán $90 $7,9 $3,9 $0,8

Đặt vé máy bay $89 $7,9 $3,9 $0,8

Dịch vụ di động $41 $3,6 $1,8 $0,4

Phí tổn mạng trực tuyến $25 $2,2 $1,1 $0,2

Phí tổn dịch vụ ATM $14 $1,2 $0,6 $0,1

Bảng 1.2: Chi phí của một hệ thống bị lỗi được đưa ra bằng cách phân tích thời gian chết (về doanh số bị mất tính ngay từ thời điểm đó), giả sử có 3 mức khác nhau và thời gian chết được phân phối đều. Những dữ liệu này từ Kembel [2000] và được thu thập, phân tích bởi Phòng kế hoạch & nghiên cứu sự kiện.

Đáp ứng yêu cầu vẫn là điều quan trọng, nhưng xét tổng thể hiệu quả và chi phí sinh lời, được xác định bằng việc xem xét có bao nhiêu yêu cầu được xử lý trong một đơn vị thời gian, là những số liệu quan trọng hơn cho hầu hết các máy chủ.

Một vấn đề liên quan là những siêu máy tính. Chúng là những chiếc máy tính đắt nhất, trị giá hàng chục triệu đô la và được nhấn mạnh ở hiệu suất.

Chương 1: Giới thiệu chung 19

1.2.3. Máy tính nhúng (Embedded computer)

Máy tính nhúng là phần phát triển nhanh nhất của thị trường máy tính. Các thiết bị này là bao gồm các máy móc hằng ngày, từ các lò vi sóng, máy giặt, máy in, những bộ chuyển mạch mạng và tất cả các xe có gắn các vi xử lý nhúng đơn giản, đến các thiết bị cầm tay kỹ thuật số, như điện thoại di động, thẻ thông minh, rồi các trò chơi điện tử và cả những bộ giả mã số.

Máy tính nhúng phát triển chóng mặt cả về sức mạnh xử lý lẫn chi phí. Chúng bao gồm những vi xử lý 8-bit và 16-bit mà chi phí chỉ hơn nhau 1 xu, những vi xử lý 32-bit thì có thể thực hiện 100 triệu lệnh trong 1 giây và giá chỉ dưới 5 đô la và những vi xử lý cấp cao cho các trò chơi điện tử mới nhất hay các bộ chuyển mạch mạng cũng chỉ có giá 100 đô la mà thôi, chúng thực thi 1 tỉ lệnh trong 1 giây. Mặc dù khả năng của máy tính trong thị trường máy tính nhúng là rất lớn, nhưng giá cả là một yếu tố then chốt trong việc thiết kế máy tính cho không gian này. Hiệu suất có còn tồn tại?, vẫn còn, nhưng mục tiêu chính là đáp ứng liên tục nhu cầu thực hiện ở một mức giá tối thiểu hơn là phải đạt hiệu suất cao hơn ở một mức giá ngất ngưởng.

Thông thường, yêu cầu thực hiện trong một ứng dụng nhúng là thời gian thực thi. Một yêu cầu có hiệu suất thời gian thực là khi một phân đoạn ứng dụng có thời gian tối đa để thực hiện tuyệt đối. Ví dụ, trong một bộ giải mã kỹ thuật số, thời gian để xử lý mỗi khung hình là có hạn, bộ xử lý phải chấp nhận và xử lý kết cấu tiếp theo trong thời gian ngắn lại. Trong một số ứng dụng, có nhiều sắc thái yêu cầu cùng tồn tại, thời gian trung bình cho một công việc cụ thể bị hạn chế cũng như số lượng các trường hợp khi một vài thời gian tối đa bị vượt quá. Như vậy, phương pháp tiếp cận, đôi khi được gọi là làm mềm thời gian thực (soft real-time), phát sinh khi người ta đôi khi có thể bỏ qua các hạn chế về thời gian trên một sự kiện, miễn sao không có quá nhiều người bỏ qua. Hiệu suất thời gian thực có xu hướng đánh giá cao các ứng dụng phụ thuộc.

Hai đặc điểm quan trọng khác tồn tại trong nhiều ứng dụng nhúng: sự cần thiết giảm thiểu bộ nhớ và giảm thiểu điện năng. Trong nhiều ứng dụng nhúng, bộ nhớ là một phần đáng kể ảnh hưởng đến chi phí, điều quan trọng là cần tối ưu hóa kích thước bộ nhớ trong nhiều trường hợp cụ thể khác nhau. Đôi khi ứng dụng được dự kiến sẽ phù hợp hoàn toàn trong bộ nhớ trên chip xử lý, hay ứng dụng cần phải phù hợp với chip đóng gói có bộ nhớ nhỏ. Trong bất kỳ trường hợp nào, điều quan trọng của kích thước bộ nhớ là chuyển tương thích với kích thước mã, vì kích thước dữ liệu được quyết định bởi các ứng dụng.

Bộ nhớ lớn hơn đồng nghĩa với sức mạnh được cải thiện và khả năng tối ưu hóa thường được coi trọng. Mặc dù được nhấn mạnh nếu năng lượng thấp thì xài pin, nhưng việc sử dụng nhựa tổng hợp rẻ hơn dùng gốm, việc không có quạt giải nhiệt cũng làm tiêu hao phần nào hiệu suất.

20 Kiến trúc máy tính tiên tiến

Quyển sách này áp dụng cho các thiết kế hiệu suất của bộ xử lý nhúng, bất kể là các vi xử lý được đóng gói hay là các lõi của vi xử lý, mà sẽ được lắp ráp với các phần cứng chuyên dụng khác.

1.2.4. Định nghĩa kiến trúc máy tính

Nhiệm vụ thiết kế máy tính phải đối mặt với một phức tạp là: Xác định những thuộc tính quan trọng cho một máy tính mới, sau đó thiết kế một máy tính để tối đa hóa hiệu suất trong phạm vi chi phí, năng lượng và ràng buộc sẵn có. Nhiệm vụ này có nhiều khía cạnh, bao gồm thiết kế tập lệnh, tổ chức hàm, thiết kế logic và thực hiện. Việc thực hiện có thể bao gồm tích hợp nhiều công việc như: thiết kế mạch, đóng gói, hiệu năng và làm mát. Tối ưu hóa việc thiết kế đòi hỏi phải có hiểu biết với một phạm vi rất rộng các công nghệ, từ các trình biên dịch và hệ điều hành đến thiết kế logic và đóng gói.

Trong quá khứ, thuật ngữ kiến trúc máy tính chỉ thường để gọi việc thiết kế lập ra tập lệnh. Ở một khía cạnh khác, thiết kế máy tính được gọi là thực thi, thường được nói bóng gió là thực hiện những công việc kém thú vị hoặc ít thách thức.

Chúng ta tin rằng quan điểm này là không chính xác. Các kiến trúc sư hay công việc thiết kế có được nhiều hơn việc thiết kế tập lệnh, cũng như các rào cản kỹ thuật trong các khía cạnh khác của dự án làm gặp nhiều thách thức hơn so với những gì gặp phải trong thiết kế tập lệnh. Chúng ta sẽ nhanh chóng xem xét lại kiến trúc tập lệnh trước khi mô tả những thách thức lớn hơn cho các kiến trúc sư máy tính.

1.2.5. Kiến trúc tập lệnh

Chúng ta sử dụng thuật ngữ kiến trúc tập lệnh (ISA-Instruction Set Architecture) để đưa ra các cách lập trình tập lệnh - mà có thể nhìn thấy trong quyển sách này. ISA phục vụ như là ranh giới giữa phần mềm và phần cứng. Điều xem xét nhanh chóng này của ISA sẽ sử dụng các ví dụ từ MIPS và 80x86 để minh họa cho 7 kích thước của một ISA.

1. Loại ISA: Gần như tất cả ISA ngày hôm nay được phân loại như là kiến trúc thanh ghi chung, nơi mà các toán hạng hoặc là lưu trữ ở thanh ghi hoặc là bộ nhớ. Các 80x86 có 16 thanh ghi sử dụng chung và 16 thanh ghi này có thể chứa dữ liệu chấm động (floating-point), trong khi MIPS có 32 thanh ghi chung và 32 thanh ghi chấm động (xem bảng 1.3). Hai phiên bản phổ biến của loại này là những ISA thanh ghi-bộ nhớ như 80x86, có thể truy cập bộ nhớ như là một phần của nhiều tập lệnh và những ISA lưu-tải như MIPS, có thể truy cập bộ nhớ chỉ với hoặc tải hoặc lưu trữ các lệnh. Tất cả ISA gần đây đều lưu-tải (load-store).

Chương 1: Giới thiệu chung 21

2. Địa chỉ ô nhớ: Hầu như tất cả các máy tính để bàn và máy chủ, bao gồm cả 80x86 và MIPS, đều sử dụng byte địa chỉ để truy cập ô nhớ toán hạng. Một số kiến trúc, giống như MIPS, yêu cầu các đối tượng phải được liên kết. Một truy cập vào một đối tượng có kích thước s byte tại byte địa chỉ A được liên kết nếu A mod s=0. 80x86 không đòi hỏi, nhưng nói chung là truy cập nhanh hơn nếu toán hạng được liên kết.

3. Chế độ địa chỉ: Ngoài các quy định cụ thể về thanh ghi và các hằng, chế độ địa chỉ xác định địa chỉ cụ thể của một đối tượng trong ô nhớ. Chế độ địa chỉ của MIPS là thanh ghi, trực tiếp (cho hằng) và sự chuyển dời, vị trí mà độ dời (offset) của hằng có thể thêm vào trên thanh ghi để tạo thành địa chỉ ô nhớ. 80x86 hỗ trợ 3 cộng với 3 biến dịch chuyển: không có thanh ghi (tuyệt đối), 2 thanh ghi (theo thứ tự dịch), 2 thanh ghi mà 1 trong nó được nhân với kích thước các toán hạng trên byte (dựa vào chỉ số và sự dịch).

Tên Số Sử dụng Lưu giữ trên mỗi lần gọi

$zero 0 Hằng có giá trị bằng 0 Không

$at 1 Hợp dịch tạm Không

$v0–$v1 2–3 Giá trị kết quả hàm và đánh giá biểu thức Không

$a0–$a3 4–7 Đối số Không

$t0–$t7 8–15 Biến tạm Không

$s0–$s7 16–23 Lưu tạm Có

$t8–$t9 24–25 Tạm thời Không

$k0–$k1 26–27 Dành cho kernel OS Không

$gp 28 Con trỏ toàn cục Có

$sp 29 Con trỏ ngăn xếp Có

$fp 30 Con trỏ khung Có

$ra 31 Địa chỉ trả về Có

Bảng 1.3: Các thanh ghi MIPS và các quy ước sử dụng. Ngoài 32 thanh ghi sử dụng với mục đích chung (R0-R31), MIPS có 32 thanh ghi điểm động (F0-F31), có thể lưu trữ hoặc một con số chính xác đơn 32-bit hoặc là số có độ chính xác kép với 64-bit.

4. Loại và kích thước các toán tử: Giống như hầu hết các ISA, MIPS và 80x86 hỗ trợ toán tử có kích thước 8-bit (ký tự ASCII), 16-bit (ký tự Unicode hoặc ½ từ), 32-bit (số nguyên hoặc từ), 64-bit (từ kép hoặc số nguyên dài) và dấu chấm động IEEE 754 trong 32-bit (độ chính xác đơn) và 64-bit (độ chính xác kép). 80x86 cũng hỗ trợ 80-bit cho dấu chấm động (mở rộng độ chính xác kép).