Tải bản đầy đủ (.pdf) (260 trang)

Ebook kiến trúc máy tính tiên tiến TS trần công hùng

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (8.42 MB, 260 trang )


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


HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
TS. TRẦN CÔNG HÙNG

KIẾN TRÚC MÁY TÍNH
TIÊN TIẾN

NHÀ XUẤT BẢN THÔNG TIN VÀ TRUYỀN THÔ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:
Tác giả



MỤC LỤC
Lời nói đầu ..................................................................................................................5
Thuật ngữ viết tắt ......................................................................................................11
Chương 1: GIỚI THIỆU CHUNG ..........................................................13

1.1. Giới thiệu .......................................................................................................13
1.2. Nhu cầu tính tố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. Ngun 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: KHỐI XỬ LÝ SONG SONG Ở MỨC LỆNH MÁ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: CÁC HẠN CHẾ KHI THỰC HIỆN LỆ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 hồ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: CÁC KIẾN TRÚC ĐA XỬ LÝ .............................................. 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 qn.......................198
4.6.3. Nhận xét về các mơ hình nhất qn .....................................................199
4.7. Các vấn đề xun 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 qn ...............................200
4.7.2. Sử dụng dự đốn ẩn trễ trong các mơ hình nhất qn 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 tồ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: CÁC VI XỬ LÝ THỰC TẾ................................................... 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

Kin trỳc mỏy tớnh tiờn tin

5.2.3. B nh..................................................................................................224
5.2.4. Kin trỳc Bus ca h thng..................................................................226

5.2.5. B x lý SPARC64 VII .......................................................................227
5.2.6. Lừi (Core).............................................................................................227
5.2.7. H thng Cache....................................................................................228
5.2.8. Kin trỳc I/O ........................................................................................229
5.3. Cụng ngh Centrino trong cỏc CPU ............................................................229
5.3.1. Lch s phỏt trin 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. Nhng cụng ngh ng dng trờn nn tng 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 thng kt ni Intel WiFi Link 5000 Series.....................................237
5.4.4. H thng kt ni mng Intelđ 82567 Gigabit .....................................238
5.4.5. Chuyn i gia ha tớch hp v ha ri ...................................238
5.4.6. Cụng ngh b nh Intelđ Turbo Memory...........................................239
5.4.7. Kt lun ................................................................................................239
Chửụng 6: KIEN TRUC BO NHễ TIEN TIEN ....................................... 240

6.1. Mt s kiu t chc b nh tc cao........................................................240
6.1.1. Cỏc loi b nh ....................................................................................240
6.1.2. Cỏc cp b nh.....................................................................................243
6.2. Cỏc cụng ngh b nh tiờn tin ...................................................................244
6.3. B nh Cache tiờn tin ................................................................................244
6.3.1. Vn hnh ca Cache.............................................................................244
6.3.2. Hiu qu ca Cache .............................................................................251
6.3.3. Cache duy nht hay Cache riờng l......................................................252
6.3.4. Cỏc mc Cache ....................................................................................252
6.3.5. B nh trong ........................................................................................253

6.4. H tr b nh o..........................................................................................255
6.5. Bo v cỏc tin trỡnh bng 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
Giá của hệ thống

Desktop

Server

Hệ thống nhúng

500 USD – 5.000 USD 5.000 USD – 5.000.000 10 USD – 100.000 USD
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

200 USD – 10.000 USD 0,01 USD – 100 USD

(trên mỗi bộ vi xử lý)

(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 Giá, mức tiêu thụ điện
có, khả năng mở rộng năng, hiệu năng đối với
từng ứng dụng cụ thể

(trên mỗi bộ vi xử lý)

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ờ

($ = đô la)

1%

0,5%

0,1%

(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




$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



$sp

29


Con trỏ ngăn xếp



$fp

30

Con trỏ khung



$ra

31

Địa chỉ trả về



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).



22

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

5. Hoạt động: Các loại hoạt động chung như truyền dữ liệu, số học luận lý, điều
khiển và dấu chấm động. MIPS là một cấu trúc đường ống lệnh đơn giản và
gọn nhẹ, đại diện tiêu biểu của kiến trúc RISC sử dụng trong năm 2006. Bảng
1.4 tóm tắt các ISA MIPS. Các 80x86 có sự đa dạng hơn và thiết lập nhiều
hoạt động hơn.
6. Kiểm soát dòng lệnh: Hầu như tất cả các ISA, bao gồm cả 80x86 và MIPS,
hỗ trợ các nhánh có điều kiện, các lệnh nhảy không điều kiện, các lời gọi thủ
tục và giá trị trả về. Cả hai đều sử dụng địa chỉ tương đối của máy tính, nơi mà
các địa chỉ nhánh được thiết lập theo một trường địa chỉ được thêm vào PC.
Tất nhiên, sẽ có một vài khác biệt nhỏ. Những nhánh điều kiện MIPS (BE,
BNE, v.v…) kiểm tra nội dung những thanh ghi, trong đó nhánh 80x86 (JE,
JNE, v.v…) kiểm tra những bit mã điều kiện được thiết lập như tác dụng
ngoài của bộ xử lý số học/luận lý. Thủ tục MIPS gọi (JAL) nơi trả về địa chỉ
trên một thanh ghi, trong khi lời gọi của 80x86 (CALLF) nơi các địa chỉ trả về
nằm trên các ngăn xếp trong bộ nhớ.
7. Mã hóa ISA: Có hai lựa chọn cơ bản để mã hóa: chiều dài cố định và chiều
dài thay đổi. Tất cả các cấu trúc lệnh MIPS đều có độ dài 32 bit, làm đơn giản
hóa việc giải mã. Hình 1.2 hiển thị các định dạng về cấu trúc lệnh của MIPS.
80x86 mã hóa bằng cách biến đổi chiều dài, lần lượt từ 1 đến 18 byte. Chiều
dài được biến đổi làm ít chiếm dụng bộ nhớ hơn việc cố định chiều dài lệnh,
do đó, một chương trình biên dịch cho 80x86 thường nhỏ hơn cùng một
chương trình biên dịch trên MIPS. Lưu ý rằng việc lựa chọn nêu trên sẽ ảnh
hưởng đến cách các cấu trúc lệnh được mã hóa thành mã nhị phân tương ứng.
Ví dụ, số lượng các thanh ghi và số lượng các chế độ địa chỉ đều có một ảnh

hưởng đáng kể đến kích thước của các dòng lệnh, như các trường trên thanh
ghi và các trường trong chế độ địa chỉ có thể xuất hiện nhiều lần trong một lần
gọi lệnh.
Chúng ta sử dụng một bảng con của MIPS64 như là một ví dụ về ISA trong
quyển sách này.
Loại lệnh/mã thao tác (opcode)

Ý nghĩa lệnh

Truyền dữ liệu

Di chuyển dữ liệu từ thanh ghi và bộ nhớ, hoặc giữa các
hàm chức năng với số nguyên hoặc các thanh ghi đặc biệt;
chỉ ô nhớ của chế độ địa chỉ là 16 bit dịch chuyển + nội
dung của một bộ định vị (GPR)

LB, LBU, SB

Tải byte, tải byte không dấu, lưu trữ byte (đi/đến các thanh
ghi số nguyên)

LH, LHU, SH

Tải ½ từ, tải ½ từ không dấu, lưu trữ ½ từ (đi/đến các
thanh ghi số nguyên)


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

23


Loại lệnh/mã thao tác (opcode)

Ý nghĩa lệnh

LW, LWU, SW

Tải từ, từ không dấu, lưu trữ từ (đi/đến các thanh ghi số
nguyên)

LD, SD

Tải từ kép, lưu trữ từ kép (đi/đến các thanh ghi số nguyên)

L.S, L.D, S.S, S.D

Tải SP nổi, tải DP nổi, lưu SP nổi, lưu DP nổi

MFC0, MTC0

Sao chép từ/đến GPR đến/từ 1 thanh ghi đặc biệt

MOV.S, MOV.D

Sao chép 1 thanh ghi SP hoặc DP FP đến 1 thanh ghi FP
khác.

MFC1, MTC1

Sao chép 32 bit đến/từ thanh ghi FP (đi/đến các thanh ghi

số nguyên)

Arithmetic/logical

Phép toán trên dữ liệu số nguyên hoặc logic trong những
bộ định vị (GPRs)

DADD, DADDI, DADDU, DADDIU Cộng, cộng trực tiếp (tất cả quy thành 16 bit); có dấu và
không dấu
DSUB, DSUBU

Trừ; có dấu và không dấu

DMUL, DMULU, DDIV, DDIVU,
MADD

Nhân và chia, có dấu và không dấu; nhân-cộng; tất cả
phép toán đều là giá trị 64 bit

AND, ANDI

And, and trực tiếp

OR, ORI, XOR, XORI

Or, or trực tiếp, or loại trừ, or loại trừ trực tiếp

LUI

Tải dấu mũ trực tiếp; tải trực tiếp bit 32 đến 47 lên thanh

ghi, sau đó là các dấu mở rộng

DSLL, DSRL, DSRA, DSLLV,

Dịch trái: cả trực tiếp (DS__) và thay đổi dạng (DS__V);
dịch có s là phép dịch trái

DSRLV, DSRAV

Dịch phải luận lý và dịch phải số học

SLT, SLTI, SLTU, SLTIU

Đặt chỉ số dưới, đặt chỉ số dưới trực tiếp; có dấu và không
dấu

Control

Nhánh điều kiện và bước nhảy; thanh ghi liên quan hoặc
thông qua PC

BEQZ, BNEZ

Nhánh GPRs bằng /không bằng 0; 16-bit bù từ PC + 4

BEQ, BNE

Nhánh GPR bằng /không bằng; 16-bit độ dời từ PC + 4

BC1T, BC1F


Thử nghiệm so sánh bit trong thanh ghi về tình trạng FP và
nhánh; 16-bit độ dời từ PC + 4

MOVN, MOVZ

Sao chép GPR đến GPR khác nếu GPR thứ ba là âm,
bằng 0

J, JR

Nhảy: 26-bit độ dời từ PC + 4 (J) hay đích trên thanh ghi
(JR)

JAL, JALR

Bước nhảy và liên kết: lưu PC + 4 trong R31, mục tiêu là
giao tiếp PC (JAL) hoặc một thanh ghi (JALR)


24

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

Loại lệnh/mã thao tác (opcode)

Ý nghĩa lệnh

TRAP


Chuyển giao cho hệ điều hành tại một địa chỉ thuộc vectơ

ERET

Trả về mã người sử dụng do một ngoại lệ; khôi phục chế
độ người dùng

Dấu chấm động

Các toán tử của FP trên những định dạng của DP và SP

ADD.D, ADD.S, ADD.PS

Thêm số DP, SP và các cặp số SP

SUB.D, SUB.S, SUB.PS

Trừ số DP, SP và cặp số SP

MUL.D, MUL.S, MUL.PS

Nhân DP, SP có dấu chấm động và những cặp SP

MADD.D, MADD.S, MADD.PS

Nhân-cộng những số DP, SP và những cặp số SP

DIV.D, DIV.S, DIV.PS

Chia DP, SP có dấu chấm động và những cặp số SP


CVT._._

Chuyển đổi lệnh: CVT.x.y chuyển loại x thành loại y, trong
đó x và y là L (số nguyên 64-bit), W (số nguyên 32-bit), D
(DP), hoặc S (SP). Cả 2 toán hạng là những FPR

C.__.D, C.__.S

DP và SP so sánh: “__” = LT,GT,LE,GE,EQ,NE; bộ bit
trong thanh ghi tình trạng FP

Bảng 1.4: Các lệnh trong MIPS64. SP = độ chính xác đơn (single precision); DP=
độ chính xác kép (double precision).
Basic instruction formats
R

opcode
31

I

26 25
opcode

31
J

rs


rt
21 20

rs

26 25

rd
16 15

shamt
11 10

rt
21 20

funct
6 5

0

immediate
16 15

opcode

address

31
26 25

Floating-point instruction formats
FR

opcode
31

FI

26 25
opcode

31

fmt

26 25

ft
21 20

fmt

fs
16 15

ft
21 20

fd
11 10


funct
6 5

0

immediate
16 15

Hình 1.2: Các định dạng thiết lập kiến trúc lệnh MIPS64. Tất cả các lệnh đều có
độ dài 32 bit. Các định dạng R là dành cho các toán tử số nguyên từ thanh ghi đến thanh
ghi, chẳng hạn như DADDU, DSUBU và hơn thế nữa. Các định dạng I là dành cho việc
truyền dữ liệu, phân nhánh và các lệnh trực tiếp, chẳng hạn như LD, SD, BEQZ và
DADDIs. Các định dạng J là cho bước nhảy, định dạng FR cho các thực thi dấu chấm
động và FI định dạng cho các nhánh dấu chấm động.

Phần còn lại của kiến trúc máy tính: Thiết kế, tổ chức phần cứng để đáp
ứng các mục tiêu và đòi hỏi về chức năng.


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

25

Cài đặt một máy tính có 2 thành phần: Tổ chức và phần cứng. Thuật ngữ tổ
chức bao gồm các khía cạnh cấp cao của việc thiết kế máy tính, chẳng hạn như hệ
thống bộ nhớ, liên kết bộ nhớ và thiết kế bộ vi xử lý nội bộ hoặc CPU (đơn vị xử lý
trung tâm - nơi số học, phép toán logic, phân nhánh và luân chuyển dữ liệu được
thực hiện). Ví dụ, hai bộ xử lý với kiến trúc tập lệnh tương tự, nhưng khác nhau về
tổ chức là AMD Opteron 64 và Intel Pentium 4. Cả hai bộ vi xử lý thực hiện các tập

lệnh x86, nhưng chúng có đường ống lệnh (pipeline) rất khác nhau và các tổ chức
cache. Phần cứng là các chi tiết cụ thể của một máy tính, bao gồm cả việc thiết kế
và đóng gói công nghệ. Thường thì một dòng máy tính chứa các máy tính có thiết
lập giống hệt nhau, kiến trúc tập lệnh và tổ chức chúng gần như nhau, nhưng chúng
khác nhau trong việc thiết kế chi tiết phần cứng. Ví dụ, Pentium 4 và Pentium 4
Mobile dòng di động gần như giống hệt nhau, nhưng tốc độ xung nhịp xử lý khác
nhau và hệ thống bộ nhớ khác nhau, làm cho Pentium 4 Mobile hiệu quả hơn cho
các máy tính cấp thấp.
Trong quyển sách này, khái niệm kiến trúc bao gồm tất cả ba khía cạnh của
kiến trúc máy tính: kiến trúc tập lệnh, tổ chức và phần cứng. Những kiến trúc máy
tính phải đáp ứng những yêu cầu chức năng cũng như giá cả, sức mạnh, hiệu suất và
các mục tiêu sẵn có. Bảng 1.5 tóm tắt những yêu cầu cần xem xét trong việc thiết kế
một máy tính mới. Thông thường, những kiến trúc sư cũng phải tự xác định được
các yêu cầu chức năng, đặc biệt là một chức năng chính nào đó. Các yêu cầu về tính
năng cụ thể có thể lấy cảm hứng từ thị trường. Phần mềm ứng dụng thường điều
khiển một số chức năng chính được quyết định bởi người sử dụng. Nếu phần thân
lớn của một phần mềm tồn tại cho một kiến trúc tập lệnh nhất định, thì các kiến trúc
sư có thể quyết định rằng một máy tính mới phải thực hiện tập lệnh hiện tại đó. Sự
nổi lên của một thị trường lớn cho một lớp các ứng dụng đặc biệt có thể khuyến
khích các nhà thiết kế kết hợp các yêu cầu đó lại và sẽ làm tăng sự cạnh tranh trên
thị trường đó. Nhiều trong số các yêu cầu và tính năng sẽ được đào sâu ở các
chương sau.
Kiến trúc sư cũng phải thích ứng nhanh với các xu hướng quan trọng trong
công nghệ và việc sử dụng máy tính, như vậy xu hướng này không chỉ ảnh hưởng
đến chi phí trong tương lai, mà còn quyết định sự tồn tại lâu dài của một cấu trúc.
Nếu một thân của phần mềm tồn tại đối với một kiến trúc tập lệnh chắc chắn,
các kiến trúc sư có thể quyết định rằng một máy tính mới nên thực hiện một tập
lệnh hiện tại. Sự hiện diện của một thị trường lớn cho một lớp học đặc biệt của ứng
dụng có thể khuyến khích các nhà thiết kế để kết hợp các yêu cầu đó sẽ làm cho
máy tính cạnh tranh trong thị trường đó.



26

Kiến trúc máy tính tiên tiến
Chức năng yêu cầu

Đặc điểm nổi bật không thể thiếu hoặc hỗ trợ

+ Phạm vi sử dụng

+ Trong phạm vi máy tính

- Mục đích chung máy tính
để bàn

- Ổn định hiệu suất cho một loạt các nhiệm vụ, bao gồm cả
hoạt động tương tác cho đồ họa, video và âm thanh.

- Kiến thức về máy tính để
bàn và máy chủ

- Hiệu suất cao dấu chấm động và đồ họa.

- Các máy chủ thương mại

- Hỗ trợ cho cơ sở dữ liệu và xử lý giao dịch; cải tiến cho độ
tin cậy và sẵn có; hỗ trợ cho khả năng mở rộng.

- Máy tính nhúng


- Thông thường hỗ trợ cho đồ họa hoặc video (hoặc các ứng
dụng mở rộng cụ thể); hạn chế và kiểm soát các chức năng
yêu cầu.

+ Mức độ tương thích phần
mềm

+ Xác định số lượng phần mềm có sẵn trong máy tính

- Ở ngôn ngữ lập trình

- Hầu hết linh hoạt cho các nhà thiết kế; cần trình biên dịch
mới.

- Mã đối tượng hay nhị phân
tương thích

- Hướng dẫn thiết lập kiến trúc là hoàn toàn xác định - ít linh
hoạt, nhưng không có sự đầu tư cần thiết trong các chương
trình phần mềm hoặc cổng chương trình.

+ Hệ điều hành yêu cầu

+ Các tính năng cần thiết để hỗ trợ lựa chọn hệ điều hành

- Kích thước của không gian
địa chỉ

- Đặc trưng rất quan trọng; có thể giới hạn các ứng dụng.


- Quản lý bộ nhớ

- Cần thiết cho hệ điều hành hiện đại, có thể chia thành từng
trang, hoặc phân đoạn.

- Chế độ bảo vệ

- Sự khác nhau về những nhu cầu của hệ điều hành và ứng
dụng, trang so với đoạn, máy ảo.

+ Tiêu chuẩn

+ Một số tiêu chuẩn có thể được thị trường yêu cầu

- Dấu chấm động

- Định dạng và số học: tiêu chuẩn IEEE 754, đặc biệt số học
cho đồ họa và xử lý tín hiệu.

- Giao diện I/O

- Đối với thiết bị I/O: Serial ATA, Serial Attach SCSI, PCI
Express.

- Hệ điều hành
- Các mạng

- UNIX, Windows, Linux, CISCO IOS.


- Ngôn ngữ lập trình

- Ngôn ngữ (ANSI C, C++, Java, FORTRAN), ảnh hưởng tập
lệnh.

- Hỗ trợ tốt cho các mạng khác nhau như: Ethernet, Infiniband

Bảng 1.5: Tóm tắt 1 số chức năng yêu cầu quan trọng nhất mà người kiến trúc sư
phải đối mặt. Cột bên trái mô tả các lớp yêu cầu, trong khi cột bên phải đưa ra các ví dụ
cụ thể. Cột bên phải đồng thời cũng tham chiếu đến số chương, phần để giải quyết các
vấn đề cụ thể.

1.3. Các xu hướng công nghệ
Nếu một kiến trúc tập lệnh được thiết lập có thể thành công, nó phải được
thiết kế để theo kịp sự thay đổi nhanh chóng của công nghệ máy tính. Tóm lại, một


×