Tài liệu giảng dạy Kiến trúc máy tính

TRƢỜNG ĐẠI HỌC AN GIANG  
KHOA KỸ THUẬT – CÔNG NGHỆ – MÔI TRƢỜNG  
Tài liệu giảng dạy  
KIẾN TRÚC MÁY TÍNH  
ThS. Nguyễn Văn Đông  
An Giang, 02/2016  
Tài liệu giảng dạy “Kiến trúc máy tính”, do tác giả Nguyễn Văn Đông, công tác  
tại Khoa Kỹ thuật – Công nghệ – Môi trường thực hiện. Tác giả đã báo cáo nội dung  
và được Hội đồng Khoa học và đào tạo Khoa thông qua ngày 26/2/2016, và được  
Hội đồng Khoa học và Đào tạo của trường Đại học An Giang thông qua ngày. . . . . . .  
Tác giả biên soạn  
Nguyễn Văn Đông  
Trƣởng đơn vị  
Trƣởng bộ môn  
Hiệu trƣởng  
An Giang, 02-2016  
LỜI MỞ ĐẦU  
Trong hệ thống kiến thức trang bị cho sinh viên chuyên ngành công nghệ thông  
tin và kỹ thuật phần mềm, tài liệu Kiến trúc máy tính góp phần cung cấp những nội  
dung chung nhất về nguyên lý hoạt động cũng như tổ chức một hệ thống máy tính.  
Từ đó có thể tiếp cận các mô hình kiến trúc hiện đại đang được phát triển hiện nay.  
Để phục vụ công tác giảng dạy và học tập, chúng tôi biên soạn tài liệu Kiến trúc  
máy tính nhằm cung cấp tới người học các kiến thức cơ bản nhất về lĩnh vực này.  
Chúng tôi xin chân thành cám ơn các thầy cô Bộ môn Công nghệ thông tin và Bộ  
môn Kỹ thuật phần mềm đã cho những ý kiến đóng góp quý báu để tài liệu giảng dạy  
được hoàn thiện hơn. Tài liệu giảng dạy này được biên soạn chia thành 5 chương.  
Tuy rằng chúng tôi đã có nhiều cố gắng trong biên soạn nhưng chắc chắn tài liệu vẫn  
còn nhiều thiếu sót, nên rất mong được bạn đọc cũng như các đồng nghiệp đóng góp  
ý kiến để tài liệu ngày càng hoàn thiện, nhằm mục đích phục vụ tốt hơn cho việc dạy  
và học tin học đang ngày càng phát triển ở nước ta.  
Mọi sự góp ý hoặc thắc mắc xin gửi về địa chỉ email: [email protected]  
Ngày 15 tháng 02 năm 2016  
GV. biên soạn  
Nguyễn Văn Đông  
i
LỜI CAM KẾT  
Tôi xin cam đoan đây là tài liệu giảng dạy của riêng tôi. Nội dung tài liệu giảng  
dạy có xuất xứ rõ ràng.  
An Giang, ngày 15 tháng 02 năm 2016  
Ngƣời biên soạn  
Nguyễn Văn Đông  
ii  
MỤC LỤC  
iii  
iv  
DANH SÁCH HÌNH  
Hình 1.1: Giải thuật Booth.......................................................................................12  
Hình 1.2: Giải thuật thực hiện phép chia .................................................................13  
Hình 2.1: Địa chỉ ô nhớ và dữ liệu tương ứng .........................................................21  
Hình 3.1: Sơ đồ tổ chức tổng quát của MIPS...........................................................31  
Hình 3.2: Đường dẫn dữ liệu của ba loại lệnh cơ bản..............................................33  
Hình 3.3: Ba định dạng lệnh R-type, load và store, branch .....................................35  
Hình 3.4: Các tín hiệu điều khiển trong hệ thống ....................................................36  
Hình 3.5: Các tín hiệu điều khiển của các dạng lệnh...............................................37  
Hình 3.6: Đường đi dữ liệu của dạng lệnh R-format ...............................................38  
Hình 3.7: Đường đi dữ liệu của lệnh load................................................................39  
Hình 3.8: Đường đi dữ liệu của lệnh beq.................................................................40  
Hình 3.9: đường đi dữ liệu của lệnh jump ...............................................................41  
Hình 3.10: Thực hiện tuần tự so với kỹ thuật ống dẫn.............................................42  
Hình 3.11: Các giai đoạn thực thi một lệnh .............................................................43  
Hình 3.12: Ba lệnh được thực thi trong kỹ thuật ống dẫn........................................44  
Hình 3.13: Các thanh ghi ống dẫn............................................................................45  
Hình 3.14: Giai đoạn duyệt lệnh của lệnh lw...........................................................46  
Hình 3.15: Giai đoạn giải mã lệnh của lệnh lw........................................................47  
Hình 3.16: Giai đoạn thực thi của lệnh lw ...............................................................48  
Hình 3.17: Giai đoạn truy cập bộ nhớ của lệnh lw ..................................................49  
Hình 3.18: Giai đoạn ghi dữ liệu vào thanh ghi.......................................................50  
Hình 3.19: Kết hợp các giai đoạn của lệnh lw .........................................................51  
Hình 3.20: Giản đồ ống dẫn biểu diễn bằng đa chu kỳ............................................52  
Hình 3.21: Giản đồ ống dẫn đơn chu kỳ tương ứng với chu kỳ 5 của hình 3.20.....53  
Hình 3.22: Các tín hiệu điều khiển trong kỹ thuật ống dẫn .....................................54  
Hình 3.23: Các tín hiệu điều khiển của ba giai đoạn ống dẫn sau cùng...................57  
Hình 3.24: Các tín hiệu điều khiển được nối vào các phần tương ứng....................57  
Hình 4.1: Cấu trúc của cấp bậc bộ nhớ ....................................................................64  
Hình 4.2: Bộ nhớ Cache trước và sau khi CPU tham khảo từ Xn ............................65  
Hình 4.3: Ánh xạ trực tiếp từ bộ nhớ sang cache có 8 khối.....................................66  
Hình 4.4: Bộ nhớ cache với lần lượt 9 địa chỉ được truy cập ..................................68  
Hình 4.5: Ba cách tổ chức bộ nhớ khác nhau...........................................................70  
Hình 4.6: Khối 12 được đặt vào cache tương ứng với ba mô hình..........................73  
Hình 4.7: Cache 8 khối được chia thành tập hợp có 1,2,4,8 phần tử.......................74  
Hình 4.8: Mô hình kết hợp theo tập hợp với tập hợp có bốn phần tử......................77  
Hình 5.1: Hệ thống nhập/xuất điển hình..................................................................81  
Hình 5.2: Thanh ghi trạng thái và thanh ghi nguyên nhân.......................................87  
v
DANH SÁCH BẢNG  
Bảng 1.1: Số nhị phân, thập phân và thập lục phân...................................................8  
Bảng 1.2: Phép cộng 2 số được biểu diễn bằng phương pháp bù 2 .........................11  
Bảng 1.3: Phép trừ 2 số (M−S) được biểu diễn bằng bù 2.......................................11  
Bảng 2.1: Các thanh ghi và địa chỉ bộ nhớ trong MIPS...........................................20  
Bảng 2.2: Tập lệnh vi xử lý MIPS ...........................................................................20  
Bảng 2.3: Định dạng lệnh MIPS ..............................................................................26  
Bảng 2.4: mã lệnh op của các lệnh MIPS ................................................................28  
Bảng 2.5: các giá trị của trường funct với R-format................................................29  
Bảng 3.1: Thiết lập các bit điều khiển ALU dựa vào ALUOp và trường funct.......34  
Bảng 3.2: Tổng thời gian thực hiện của mỗi lệnh....................................................42  
Bảng 3.3: Thiết lập các bit ALU control..................................................................55  
Bảng 3.4: Các tín hiệu điều khiển tương ứng theo 3 giai đoạn sau cùng.................56  
Bảng 4.1: So sánh giữa ba kỹ thuật trong cấp bậc bộ nhớ .......................................65  
Bảng 4.2: CPU lần lượt truy cập 9 địa chỉ bộ nhớ ...................................................67  
vi  
DANH MỤC TỪ VIẾT TẮT  
Từ viết tắt  
ALU  
AMAT  
CISC  
CPI  
Tiếng Anh  
Tiếng Việt  
Algorithm logic unit  
Average memory access time  
Complex Instruction  
Đơn vị luận lý và số học  
Thời gian truy cập bộ nhớ trung bình  
Tập lệnh máy tính phức tạp  
Số chu kỳ xung nhịp thực thi lệnh  
Bộ xử lý  
Clock cycle per instruction  
Central processing unit  
Control unit  
CPU  
CU  
Đơn vị điều khiển  
DM  
Data memory  
Vùng nhớ dữ liệu  
DMA  
DRAM  
EX  
Direct memory access  
Dynamic random access memory  
Truy cập bộ nhớ trực tiếp  
Bộ nhớ truy cập ngẫu nhiên động  
Thực thi  
Execution  
Instruction decode  
Instruction memory  
Instruction fetch  
Input/Output  
ID  
Giải mã lệnh  
IM  
Vùng nhớ lệnh  
IF  
Duyệt lệnh  
I/O  
Thiết bị nhập/xuất  
Ít được sử dụng gần đây nhất  
Truy cập bộ nhớ  
LRU  
MEM  
MIPS  
Least recently used  
Memory  
Million instructions per second  
Triệu lệnh mỗi giây  
Microprocessor without  
Interlocked Pipeline Stages  
Multiplexor  
Bộ xử lý không đông bộ  
kỹ thuật ống dẫn  
Bộ điều hợp  
MIPS  
Mux  
PC  
Personal computer  
Register  
Máy tính cá nhân  
Thanh ghi  
Reg  
Reduced Instruction  
Set Computer  
RISC  
Tập lệnh máy tính rút gọn  
SRAM  
V
Static random access memory  
Bộ nhớ truy cập ngẫu nhiên tĩnh  
Bit hợp lý  
Valid bit  
WB  
Write-back  
Ghi kết quả trở lại  
vii  
NỘI DUNG  
CHƢƠNG 1: ĐẠI CƢƠNG  
Giới thiệu về lịch sử máy tính, cách phân loại máy tính, hiệu suất máy tính.  
Biểu diễn số nguyên và số với dấu chấm động.  
CHƢƠNG 2: TẬP LỆNH VI XỬ LÝ  
Giới thiệu về tập lệnh vi xử lý MIPS: các loại toán hạng trong lệnh, định dạng  
lệnh, các dạng lệnh khác nhau và cách giải mã ngôn ngữ máy.  
CHƢƠNG 3: TỔ CHỨC BỘ XỬ LÝ  
Giới thiệu khái niệm đường dẫn dữ liệu, cách tổ chức bộ tính toán và luận lý,  
hoạt động của bộ điều khiển chính. Nguyên lý hoạt động của kỹ thuật ống dẫn.  
CHƢƠNG 4: BỘ NHỚ  
Trình bày tổng quan về nguyên lý hoạt động của bộ nhớ cache: truy cập bộ  
nhớ, xử lý thất bại, xử lý ghi. Cách thức đo lường và phương pháp cải tiến hiệu  
suất bộ nhớ cache.  
CHƢƠNG 5: HỆ THỐNG LƢU TRỮ VÀ NHẬP – XUẤT  
Giới thiệu về hệ thống lưu trữ và nhập xuất. Cấu tạo và nguyên lý hoạt động  
của đĩa từ, bộ nhớ flash. Kết nối giữa bộ xử lý, bộ nhớ và thiết bị nhập – xuất.  
Giao tiếp thiết bị nhập – xuất với bộ xử lý, bộ nhớ và hệ điều hành.  
viii  
KẾ HOẠCH GIẢNG DẠY  
(lý thuyết: 30 tiết; thực hành: 0 tiết)  
Nội dung  
1.1 Tổng quan  
Số tiết  
1.2 Hiệu suất  
2
1.3 Biểu diễn hệ số  
Chương 1 1.4 Biểu diễn số nguyên  
2
2
2
1.5 Các phép tính trên số nguyên  
1.6 Biểu diễn số với dấu chấm động  
1.7 Biểu diễn kí tự  
2.1 Giới thiệu  
2.2 Toán tử  
2.3 Toán hạng  
Chương 2  
2
2
2.4 Giải mã ngôn ngữ máy  
3.1 Giới thiệu  
3.2 Đường dẫn dữ liệu  
2
Chương 3 3.3 Tổ chức bộ tính toán và luận lý  
3.4 Bộ điều khiển chính  
2
2
2
4
3.5 Kỹ thuật ống dẫn  
4.1 Giới thiệu  
4.2 Bộ nhớ cache  
4.3 Đo lường và cải tiến hiệu suất cache  
5.1 Giới thiệu  
5.2 Đĩa từ  
5.3 Bộ nhớ flash  
Chương 4  
Chương 5  
2
5.4 Kết nối giữa bộ xử lý, bộ nhớ và thiết bị  
nhập – xuất  
2
5.5 Giao tiếp thiết bị nhập – xuất với bộ xử lý,  
bộ nhớ và hệ điều hành  
Ôn tập và kiểm tra  
2
Tổng  
30  
ix  
CHƢƠNG 1  
ĐẠI CƢƠNG  
Mục đích: Giới thiệu tổng quan về lịch sử phát triển của máy tính, cách phân loại  
máy tính hiện nay. Cách để đánh giá hiệu suất của máy tính. Sau đó trình bày biểu  
diễn số nguyên không dấu và có dấu, các phép tính cơ bản trên số nguyên này. Trình  
bày cách biểu diễn số với dấu chấm động, biểu diễn kí tự bằng bảng mã ASCII, bảng  
mã UNICODE.  
1.1 TỔNG QUAN  
Sự ra đời của máy vi tính tạo cuộc cách mạng vĩ đại trong lịch sử văn minh nhân  
loại. Hệ thống máy tính ngày nay có thể giúp chúng ta có những bước phát triển  
mạnh mẽ, nâng cao năng suất lao động, tri thức cũng như khoa học công nghệ. Một  
cách tổng thể, lịch sử phát triển của máy tính trải qua các giai đoạn sau:  
Thế hệ máy tính thứ nhất (1946 – 1957): thế hệ này được đặc trưng bằng kỹ  
thuật ống chân không (vacuum tube). Chiếc máy vi tính đầu tiên ENIAC (Electronic  
Numerical Integrator And Computer) do Giáo sư Mauchly và học trò của ông Eckert  
tại đại học pennsylvania bắt đầu thiết kế vào năm 1943 và được hoàn thành vào năm  
1946. Đây là một máy vi tính khổng lồ với chiều dài 20 mét, cao 2,8 mét, năng lực  
tính toán là 5000 phép cộng trong một giây.  
Giáo sư toán học John Von Neumann lần đầu đưa ra khái niệm chương trình  
được lưu trữ (stored-program concept) vào năm 1945. Đến năm 1946, ông cùng các  
đồng nghiệp thiết kế máy tính IAS tại Princeton Institute for Advanced Studies. Máy  
tính này gồm các thành phần: bộ nhớ dùng để lưu trữ chung cho cả dữ liệu và lệnh,  
bộ số học – luận lý (ALU) thực hiện phép toán trên dữ liệu nhị phân, bộ điều khiển  
được dùng để điều khiển thực thi lệnh trong bộ nhớ và hoạt động của hệ thống  
nhập/xuất. Đây là một ý tưởng nền tảng cho các máy tính hiện đại ngày nay. Máy  
tính này còn được gọi là máy tính Von Neumann.  
Thế hệ thứ hai (1958-1964): thế hệ này bắt đầu bằng sự thay thế ống chân  
không bằng transistor với ưu điểm là nhỏ hơn, giá thành rẻ hơn, tỏa nhiệt ít hơn.  
Transistor được phát minh bởi công ty Bell Labs vào năm 1947 nhưng đến cuối thập  
niên 50, máy tính thương mại dùng transistor mới xuất hiện trên thị trường. Ngoài ra,  
ở thế hệ này các thành phần quan trọng trong máy tính như: bộ số học – luận lý, bộ  
điều khiển cũng được thiết kế phức tạp hơn. Một số ngôn ngữ cấp cao được dùng để  
lập trình như: FORTRAN năm 1956, COBOL năm 1959, ALGOL năm 1960) và  
phần mềm hệ thống (system software) trong máy tính cũng được giới thiệu.  
Thế hệ thứ ba (1965-1971): Thế hệ này bắt đầu bằng sự xuất hiện của mạch  
tích hợp (integrated circuit ). Vi mạch này cho phép đặt một số transistor trên một  
chip đơn. Các mạch tích hợp với mật độ thấp (SSI: Small Scale Integration) có thể  
chứa vài chục linh kiện và mạch tích hợp với mật độ trung bình (MSI: Medium Scale  
Integration) chứa hàng trăm linh kiện. Do những cải tiến lớn về công nghệ nên các  
1
   
máy tính của thế hệ này trở nên nhỏ hơn, nhanh hơn và rẽ hơn các máy tính thế hệ  
trước đó. Hệ điều hành và khả năng đa lập trình cũng đã xuất hiện.  
Thế hệ thứ tư (1972 – ngày nay): thế hệ này đánh dấu bằng tiến bộ của kỹ  
thuật mạch tích hợp. Với sự giới thiệu của mạch tích hợp mật độ cao (LSI: Large  
Scale Integration) chứa hàng ngàn linh kiện được đặt trên một chip đơn, mạch tích  
hợp mật độ rất cao (VLSI: Very Large Scale Integration) có thể đạt hơn 10 ngàn linh  
kiện trên một chip và mạch tích hợp với mật độ siêu lớn (ULSI: Ultra Large Scale  
Integration) có thể chứa hơn một triệu linh kiện. Đặc biệt thế hệ này có sự xuất hiện  
của bộ nhớ bán dẫn (semiconductor memory) và bộ vi xử lý (microprocessor). Máy  
tính cá nhân PC (Personal Computer) đầu tiên đã ra đời như Kenback-1. Các kỹ  
thuật cải tiến tốc độ xử lý của máy tính không ngừng được phát triển: kỹ thuật ống  
dẫn, kỹ thuật vô hướng, xử lý song song …  
Ngày nay kỹ thuật máy tính được sử dụng trong nhiều lĩnh vực khác nhau từ các  
thiết bị nhúng trong ngôi nhà thông minh, điện thoại đến những các siêu máy tính  
(supercomputer). Trong các thiết bị này, nền tảng phần cứng tuy có khác nhau nhưng  
một cách tổng quan có thể phân loại máy tính thành các loại như sau:  
Máy tính cá nhân (Personal computer - PC): đây là loại được sử dụng phổ  
biến nhất. Máy tính cá nhân được thiết kế để sử dụng cho mục đích có nhân có hiệu  
suất tương đối tốt với chi phí thấp.  
Máy chủ (Server): đây là loại máy tính hiện đại bao gồm các loại máy tính  
lớn (mainframes, minicomputers và supercomputers) và chỉ được truy cập thông qua  
mạng. Server thực hiện các luồng công việc lớn như: các ứng dụng tính toán khoa  
học và kỹ thuật hoặc xử lý rất nhiều công việc như một Web server lớn. Mặc dù  
không được gọi là supercomputer, nhưng các trung tâm dữ liệu (datacenter) trên  
internet được dùng bởi các công ty lớn như eBay hay Google chứa hàng ngàn bộ vi  
xử lý với bộ nhớ chính có dung lượng terabyte (1TB = 1024 GB) và hệ thống lưu trữ  
lên đến petabyte (1PB = 1024 TB). Những hệ thống này bao gồm nhiều cụm  
(cluster) máy tính lớn.  
Máy tính nhúng (Embedded computer): được ứng dụng rộng lớn nhất trong  
hầu hết các lĩnh vực. Loại này bao gồm các vi xử lý gắn trong xe hơi, hệ thống xử lý  
trong điện thoại, các hệ thống xử lý trong video game hay tivi và hệ thống vi xử lý  
trong máy bay hay tàu thủy hiện đại. Hệ thống nhúng này được thiết kế để chạy một  
ứng dụng hoặc một tập các ứng dụng có liên quan, được tích hợp với phần cứng và  
được xem như một hệ thống đơn.  
1.2 HIỆU SUẤT (performance)  
1.2.1 Dẫn nhập  
Làm sao để có thể đo đạc, đánh giá hiệu suất (performance) và định ra được  
những yếu tố quyết định đến hiệu suất của 1 máy tính ? Lý do chính để khảo sát về  
hiệu suất là vì hiệu suất của phần cứng máy tính thường là yếu tố mấu chốt quyết  
định đến tính hiệu quả trong hoạt động của1 một hệ thống bao gồm cả phần cứng lẫn  
phần mềm. Hiệu suất luôn là một thuộc tính quan trọng trong việc lựa chọn, mua bán  
2
   
các máy tính được cả người bán lẫn người mua quan tâm! Hiệu suất càng được các  
nhà thiết kế máy tính (trong đó có chúng ta) quan tâm.  
Việc đánh giá hiệu suất máy tính không hề đơn giản. Hiệu suất không chỉ có được  
do các cải tiến phần cứng mà cũng có thể nhờ vào các phần mềm thông minh hay cả  
hai. Tùy góc độ ứng dụng khác nhau, hiệu suất hoàn toàn có thể được đánh giá theo  
những phương cách, những chỉ số khác nhau. Ở góc độ nhà thiết kế máy tính (phần  
cứng/phần mềm), chúng ta cần nắm rõ: Các vấn đề liên quan đến việc đánh giá hiệu  
suất máy tính, hoạt động của các thành phần khác nhau (phần cứng/phần mềm) và  
ảnh hưởng của chúng đến hiệu suất. Trong mỗi ứng dụng cụ thể, xác định phương  
pháp đánh giá hiệu suất phù hợp.  
Định nghĩa hiệu suất: trước hết chúng ta xem xét hai khái niệm liên quan  
.
Thời gian đáp ứng (response time) hay thời gian thực thi (execution time), là  
thời gian từ khi bắt đầu đến khi kết thúc chương trình. Thời gian này bao gồm: thời  
gian truy cập đĩa, thời gian truy cập bộ nhớ, thời gian thực thi CPU,…  
.
Throughput: là tổng số các chương trình thực thi xong trong một đơn vị thời  
gian.  
Trước tiên, chúng ta đánh giá hiệu suất thông qua thời gian thực thi. Cực đại hóa  
hiệu suất đồng nghĩa với tối thiểu hóa thời gian thực thi. Quan hệ giữa hiệu suất và  
thời gian thực thi ở máy tính X sẽ là:  
 
            
 
                   
 
Ta nói máy tính X có hiệu suất cao hơn máy tính Y n lần đồng nghĩa với máy tính  
X nhanh hơn máy tính Y n lần.  
          
 
    
          
 
Thí dụ: nếu máy tính A thực thi chương trình mất 10s và máy tính B thực thi cùng  
chương trình mất15s, A nhanh hơn B bao nhiêu lần?  
Ta biết rằng A nhanh hơn B n lần nếu:  
          
          
                   
                   
 
 
 
    
 
 
15  
10  
Do đó:  
1.5 Vậy máy tính A nhanh hơn máy tính B 1.5 lần  
1.2.2 Đo đạc hiệu suất  
Thời gian được sử dụng làm thước đo cho hiệu suất máy tính. Tuy nhiên thời gian  
ở đây được định nghĩa theo nhiều cách khác nhau, tùy theo mục đích đo đạc như:  
thời gian theo xung nhịp (clock), thời gian thực thi (execution time), thời gian trôi  
qua (elapsed time). Thời gian thực thi chương trình bao gồm thời gian thực thi bởi  
CPU lẫn các thiết bị khác (bộ nhớ, đĩa cứng,v.v...). Để đơn giản, chúng ta chỉ giới  
hạn xem xét đối với CPU mà thôi.  
3
 
Có thể đo đạc hiệu suất qua thời gian thực thi theo chu kỳ xung nhịp (clock cycle)  
và thời gian chu kỳ xung nhịp (clock cycle time) như sau:  
Thời gian thực thi  
của một chương trình  
Số chu kỳ xung nhịp  
của chương trình  
Thời gian chu kỳ  
xung nhịp  
×
=
hay:  
Thời gian thực thi  
của một chương trình  
Với tần số xung nhịp (clock xung nhịp  
(clock cycle).  
S                    ủ    ươ    rì   
                 
=
Thí dụ: thời gian thực thi chương trình trên máy tính A, tần số 4 GHz, là 10s.  
Chúng ta muốn thiết kế máy tính B có thể thực thi chương trình trên trong 6s. Để đạt  
được điều này, cần phải tăng tần số xung nhịp của máy B và vì vậy số chu kỳ xung  
nhịp thực thi chương trình bị tăng lên 1,2 lần. Hãy xác định tần số xung nhịp của  
máy B?  
Đầu tiên, tính số chu kỳ xung nhịp cần để thực hiện chương trình trên máy A, ta  
có:  
                    
 
                     
 
                 
 
                    
 
          
       
 
       
     
       
 
 
                                       
                 
 
     
Thời gian thực thi trên máy B được tính như sau:  
                          
 
                     
 
                 
                     
 
 
         
                 
 
 
 
                                   
                   
 
       
 
       
     
Do đó, cần tăng gấp đôi tần số xung nhịp của máy B so với máy A để chương  
trình thực thi trong 6s.  
Ngoài ra, ta có thể tính thời gian thực thi chương trình dựa vào chỉ số CPI (clock  
cycle per instruction): số chu kỳ xung nhịp trung bình cần thiết để thực thi một câu  
lệnh. Khi đó số chu kỳ xung nhịp có thể được tính:  
Số chu kỳ xung nhịp = (số lệnh của chương trình) × CPI  
4
Thí dụ: xét 2 máy tính A và B có cùng kiến trúc tập lệnh. Máy A có chu kỳ xung  
nhịp là 250 ps và đạt được CPI là 2,0 khi chạy chương trình P. Máy B có chu kỳ  
xung nhịp là 500 ps và đạt được CPI bằng 1,2 khi chạy chương trình P. Máy nào thực  
thi chương trình P nhanh hơn và nhanh hơn bao nhiêu lần ?  
Do 2 máy có cùng kiến trúc tập lệnh nên số lệnh thực thi của chương trình P trên  
2 máy này bằng nhau. Giả sử gọi số lệnh này là I. Ta có:  
Số chu kỳ xung nhịpA = I × 2.0  
Số chu kỳ xung nhịpB = I × 1.2  
Do đó, thời gian thực thi trên mỗi máy:  
Thời gian thực thiA = Số chu kỳ xung nhịpA × thời gian chu kỳ xung nhịpA  
= I × 2.0 × 250 ps = 500 × I ps  
Thời gian thực thiB = I × 1.2 × 500 ps = 600 × I ps  
Như vậy, máy tính A nhanh hơn là:  
          
          
                   
                   
           
           
 
 
 
 
      
 
 
Dựa trên chỉ số CPI, ta có công thức tính thời gian thực thi:  
Thời gian thực thi = số lệnh × CPI × thời gian chu kỳ xung nhịp  
hay:  
              
                     
                 
Trong trường hợp tập lệnh được phân chia thành nhiều nhóm lệnh, khi đó hiệu  
suất có thể tính toán theo nhóm lệnh như sau:  
 
                      ∑           
 
 
    
Thí dụ: xét 1 máy tính có đặc điểm tập lệnh như sau:  
CPI của nhóm lệnh  
A
1
B
2
C
3
CPI  
Khi biên dịch cùng 1 chương trình nguồn bằng 2 trình biên dịch khác nhau, ta  
được 2 đoạn mã lệnh như sau:  
Số lệnh của nhóm lệnh  
Đoạn mã lệnh  
A
2
B
1
C
2
1
2
4
1
1
5
Đoạn mã nào thực hiện nhiều câu lệnh hơn ? chạy nhanh hơn ? Tính CPI cho từng  
đoạn mã lệnh ?  
Đoạn mã 1 thực hiện: 2 + 1 + 2 = 5 lệnh, trong khi đoạn mã 2 thực hiện là:  
4 + 1 + 1 = 6 lệnh. Như vậy, đoạn mã 2 thực hiện nhiều lệnh hơn.  
Để tính số chu kỳ xung nhịp cho mỗi đoạn mã dựa vào công thức:  
 
                      ∑           
 
 
    
Do đó:  
 
 
 
 
 
 
                                                                    
 
 
 
 
 
 
 
                                                                   
 
Vì thế đoạn mã 2 thực hiện nhanh hơn. CPI của mỗi đoạn được tính như sau:  
                    
      
        
                    
   
 
 
      
 
 
    
 
        
 
                    
 
 
      
      
 
        
 
 
Một chỉ số khác cũng được dùng để đánh giá hiệu suất, đó là MIPS (million  
instructions per second) được xác định như sau:  
        
   S   
 
                        
Thí dụ: cũng với thí dụ vừa rồi, xét bảng số liệu sau:  
Số lệnh (đơn vị: tỷ) của mỗi nhóm lệnh  
Mã lệnh  
A
5
B
1
C
1
Trình biên dịch 1  
Trình biên dịch 2  
10  
1
1
giả sử máy trên có tần số xung nhịp là 4 GHz. Cho biết trình biên dịch nào thực  
thi nhanh hơn nếu tính theo thời gian thực thi? nếu tính theo MIPS?  
Đầu tiên, tính thời gian thực thi đối với mỗi trình biên dịch theo công thức sau:  
                    
                     
                 
với:  
 
                      ∑           
 
 
    
 
 
 
 
 
 
                                                           
                                                            
 
 
 
 
Vì vậy thời gian thực thi của từng compiler là:  
6
 
        
                     
           
 
 
       
 
        
                     
            
 
 
       
Dựa vào thời gian thực thi thì ta thấy trình biên dịch 1 tạo ra chương trình thực thi  
nhanh hơn trình biên dịch 2.  
Bây giờ ta tính theo MIPS dùng công thức:  
        
   S   
 
                        
 
                 
   S   
        
        
 
 
         
 
                  
   S   
 
 
          
1.3 BIỂU DIỄN HỆ SỐ  
Một số có dạng tổng quát (dk-1dk-2…d1d0)r và có giá trị:  
V = dk-1 × rk-1 + dk-2 × rk-2 +…+ d1× r + d0  
Với: k là số chữ số, r: hệ số (r = 2: hệ nhị phân, r =10: hệ thập phân,…), d là giá  
trị của chữ số.  
Ví dụ: biểu diễn số (1011)2  
(1011)2=1×23+0×22+1×21+1  
biểu diễn số (517)10  
(517)10 = 5×102+1×101+7  
Chuyển từ hệ nhị phân sang hệ thập phân:  
Để chuyển một số nhị phân sang số thập phân thì số thập phân tương ứng được  
xác định bằng (dn-1 × 2n-1) +…+ (d1 × 21) + d0  
Ví dụ: (10011101)2 = 27+24+23+22+1 = 157  
Chuyển từ hệ thập phân sang hệ nhị phân:  
Để đổi số thập phân sang số nhị phân, thực hiện vòng lặp phép chia nguyên số  
thập phân cho 2 đến khi nào thương số bằng 0 thì kết thúc. Khi đó, các số dư của  
phép chia chính là số nhị phân cần tìm (ghi kết quả theo thứ tự từ dưới lên trên).  
Ví dụ: đổi số 37 sang số nhị phân  
Chia  
37/2  
18/2  
9/2  
Thương số  
Số dư  
18  
9
1
0
1
0
0
1
4
4/2  
2
2/2  
1
1/2  
0
Kết quả: 37 = (100101)2  
7
 
Chuyển từ hệ nhị phân sang hệ thập lục phân (hexadecimal):  
Hệ thập lục phân sử dụng 16 kí số: 0 – 9, A – F. Bảng 1.1 thể hiện số tương ứng  
giữa số nhị phân, số thập phân và số thập lục phân.  
Bảng 1.1: Số nhị phân, thập phân và thập lục phân  
Hệ nhị phân  
0000  
0001  
0010  
0011  
0100  
0101  
0110  
0111  
1000  
1001  
1010  
1011  
1100  
1101  
1110  
1111  
Hệ thập phân  
Hệ thập lục phân  
0
1
0
1
2
2
3
3
4
4
5
5
6
6
7
7
8
8
9
9
10  
11  
12  
13  
14  
15  
A
B
C
D
E
F
Để chuyển đổi số nhị phân sang số thập lục phân thì mỗi chữ số thập lục phân sẽ  
tương ứng với 4 bit của số nhị phân.  
Ví dụ: đổi số nhị phân sau sang số thập lục phân:  
1110 1011 0001 0110 1010 0111 1001 0100  
nhóm 4 bit tương ứng từ phải sang trái tương ứng với các chữ số thập lục phân như  
sau:  
Kết quả: (1110 1011 0001 0110 1010 0111 1001 0100)2 = (EB16A794)16  
Chuyển từ hệ thập lục phân sang hệ thập phân:  
Để chuyển một số thập lục phân sang số thập phân thì số thập phân tương ứng  
được xác định bằng (dn-1 × 16n-1) + (dn-2 ×16n-2) +…+ (d1 × 161) + d0  
Ví dụ: đổi số (3BA4)16 sang số thập phân  
(3BA4)16 = (3 × 163) + (11 × 162) + (10 × 161) + 4 = 15268  
Chuyển từ hệ thập phân sang hệ thập lục phân:  
Để đổi số thập phân sang số thập lục phân, thực hiện vòng lặp phép chia nguyên  
số thập phân cho 16 đến khi nào thương số bằng 0 thì kết thúc. Khi đó, các số dư của  
phép chia chính là số thập lục phân cần tìm (ghi kết quả theo thứ tự từ dưới lên trên).  
Ví dụ: đổi số (422)10 sang số thập lục phân  
8
Chia  
422/16  
26/16  
1/16  
Thương số  
Số dư  
26  
1
6
A
1
0
Kết quả: (422)10 = (1A6)16  
1.4 BIỂU DIỄN SỐ NGUYÊN  
1.4.1 Biểu diễn số nguyên không dấu  
Tất cả các số cũng như các kí tự trong máy vi tính đều được biểu diễn bằng các  
chữ số nhị phân. Để biểu diễn các số nguyên không dấu, người ta dùng n bit. Tương  
ứng với độ dài của số bit được sử dụng, ta có các khoảng giá trị xác định như sau:  
Số bit  
n bit  
Khoảng giá trị  
0…2n - 1  
8 bit  
0…255  
16 bit  
0.. 65535  
1.4.2 Biểu diễn số nguyên có dấu  
Biểu diễn bằng dấu và trị tuyệt đối (Sign-Magnitude Representation)  
Để biểu diễn số nguyên có dấu n-bit có dạng an-1an-2…a1a0 thì sử dụng bit trái nhất  
(an-1) làm bit dấu. Bit dấu bằng 0 thể hiện số dương và bằng 1 thể hiện số âm. Giá trị  
được thể hiện bằng n ‒ 1 bit còn lại. Biểu diễn số +18 và −18 như sau:  
+18 = 00010010  
−18 = 10010010  
Số nguyên cần biểu diễn có thể được xác định theo công thức sau:  
Phương pháp này gây ra hai khó khăn cho tính toán. Thứ nhất, khi phải thực hiện  
các phép cộng và phép trừ thì cần phải lưu ý đến dấu và độ lớn của hai số để thực  
hiện chính xác. Thứ hai, theo phương pháp này thì số 0 có hai cách biểu diễn:  
+0 = 00000000  
−0 = 10000000  
Điều này gây ra khó khăn khi phải xử lý các phép tính đối với số 0. Do vậy  
phương pháp biểu diễn này ít được sử dụng trong bộ phận ALU của vi xử lý.  
Biểu diễn bằng bù 2  
Giống như phương pháp biểu diễn dấu và trị tuyệt đối, ở phương pháp này cũng  
dùng bit trái nhất (leftmost) để xác định số âm hay số dương. Nếu bit này bằng 0 biểu  
diễn số dương, ngược lại bit này bằng 1 biểu diễn số âm.  
9
     
Tải về để xem bản đầy đủ
pdf 101 trang yennguyen 25400 Free
Bạn đang xem 20 trang mẫu của tài liệu "Tài liệu giảng dạy Kiến trúc máy tính", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdftai_lieu_giang_day_kien_truc_may_tinh.pdf