• Cho một chương trình máy tính thực hiện 2 triệu lệnh (instructions) dùng CPU 400MHz. Chương trình gồm có bốn loại lệnh khác nhau. Các lệnh này có CPI và tỷ lệ theo bảng như sau: Trong bảng trên, thời gian xử lý được tính theo giây (seconds), với 100,000,000 lệnh được thực thi trong mỗi chương trình. Yêu cầu: tính MIPS cho mỗi máy tính với mỗi chương trình; tính giá trị trung bình arithmetic và harmonic và xếp hạng các máy tính dựa theo các giá trị trung bình trên. (1,0 điểm) • Các chức năng chính của máy tính là gì, nêu ngắn gọn từng chức năng
Trang 1Điểm Câu số 1
Trả lời
Các chức năng chính của máy tính là gì, nêu ngắn gọn từng chức năng (1,0 điểm)
- Máy tính có 4 chức năng chính : + Xử lý dữ liệu
+ Lưu trữ dữ liệu + Di chuyển dữ liệu + Điều khiển
- Xử lý dữ liệu: Dữ liệu có thể có rất nhiều dạng và phạm vi yêu cầu xử lý cũng rất rộng
- Lưu trữ dữ liệu:
+ Chức năng lưu trữ ngắn hạn
+ Chức năng lưu trữ dài hạn
- Di chuyển dữ liệu : máy tính phải có khả năng di chuyển dữ liệu giữa nó và thế giới bên ngoài
+ Tiến trình nhập xuất dữ liệu (I/O) : thực hiện di chuyển dữ liệu trong
cự ly ngắn giữa máy tính và thiết bị nối kết trực tiếp
+ Tiến trình truyền dữ liệu: thực hiện di chuyển dữ liệu trong cự ly xa giữa máy tính và thiết bị nối kết từ xa
- Điều khiển: bên trong hệ thống máy tính, đơn vị điều khiển có nhiệm vụ quản lý các tài nguyên máy tính và điều phối sự vận hành của các thành phần chức năng phù hợp với yêu cầu nhận được từ người sử dụng
Bộ nhớ cache là gì, nêu đặc điểm của cache, có bao nhiêu loại bộ nhớ cache trong máy tính.(1,0 điểm)
- Bộ nhớ cache là một bộ nhớ nhỏ hơn, nhanh hơn, lưu trữ các bản sao dữ liệu
từ các vị trí bộ nhớ chính được sử dụng thường xuyên nhất để máy tính có thể truy cập lại dữ liệu ngay lập tức thay vì đọc lại dữ liệu từ nguồn ban đầu,
nó là bộ nhớ bán dẫn có tốc độ nhanh và chúng được đặt giữa CPU và bộ nhớ chính nằm tăng tốc truy xuất của CPU tới bộ nhớ chính
Trang 2- Đặc điểm của bộ nhớ cache :
+ Nhiều lớp bộ nhớ giữa bộ xử lý và bộ nhớ chính
+ Thời gian truy cập nhỏ
+ Nhỏ hơn và nhanh hơn bộ nhớ chính
+ Trung gian giữa bộ nhớ chính và thanh ghi trong CPU
+ Được sử dụng để tăng tốc độ truy cập bộ nhớ bằng cách đặt vào bộ nhớ đệm dữ liệu từ bộ nhớ chính có khả năng được sử dụng trong tương lai gần + Cải thiện hiệu suất lớn hơn có thể đạt được bằng cách sử dụng nhiều cấp bộ nhớ đệm, với cấp 1 (L1) gần lõi nhất và các cấp bổ sung (L2, L3, v.v.) xa dần với lõi
+ Cache có thể có hoặc không
- Trong máy tính có tất cả 3 loại bộ nhớ cache là L1, L2 và L3
Tại sao truy xuất bộ nhớ cache nhanh hơn memory thông thường (1,0 điểm)
- Truy xuất bộ nhớ cache nhanh hơn memory thông thường vì nó nằm gần CPU hơn nên nó có thể nhận và bắt đầu xử lý các lệnh và dữ liệu nhanh hơn nhiều Địa chỉ từ một thanh ghi phải di chuyển một khoảng cách rất ngắn để đến được bộ đệm - thường là một chu kỳ xung nhịp - và dữ liệu chỉ có khoảng một chu kỳ để quay trở lại CPU, bộ nhớ đệm lưu trữ các lệnh mà bộ
xử lý có thể yêu cầu tiếp theo, sau đó có thể truy xuất nhanh hơn so với khi chúng được giữ trong RAM
Câu số 2
Trả lời
Nêu và giải thích các kỹ thuật tăng tốc độ xử lý của CPU (1,0 điểm)
- Pipelining( Kĩ thuật ống dẫn ): Bộ xử lý di chuyển dữ liệu hoặc hướng dẫn vào một đường ống khái niệm với tất cả các giai đoạn của quá trình xử lý đường ống đồng thời
- Dự đoán rẽ nhánh: Bộ xử lý nhìn trước mã lệnh được tìm nạp từ bộ nhớ và
dự đoán các nhánh hoặc nhóm lệnh nào có khả năng được xử lý tiếp theo
- Thực thi siêu cấp (Superscalar execution) F : Đây là khả năng đưa ra nhiều hơn một lệnh trong mỗi chu kỳ xung nhịp của bộ xử lý (Trên thực tế, nhiều đường ống song song được sử dụng.)
Trang 3- Phân tích luồng dữ liệu: Bộ xử lý phân tích các cấu trúc này phụ thuộc vào kết quả hoặc dữ liệu của nhau để tạo ra một lịch trình hướng dẫn được tối ưu hóa
- Thực thi suy đoán: Sử dụng dự đoán nhánh và phân tích luồng dữ liệu, một
số bộ xử lý thực thi các lệnh một cách phỏng đoán trước khi xuất hiện thực
tế trong quá trình thực thi chương trình, giữ các kết quả ở các vị trí tạm thời, giữ cho các công cụ thực thi bận rộn nhất có thể
Theo định luật Amdahl, tại sao số lượng CPU càng lớn vẫn không thể tăng tốc độ xử lý lên cao hơn (1,0 điểm)
- Vì trong chương trình luôn có một phần phải xử lý tuần tự Tăng số lượng CPU sẽ làm giảm thời gian xử lý những phần có thể chạy song song, tuy nhiên thời gian xử lý phần yêu cầu tuần tự sẽ không giảm được => tốc độ xử
lý chỉ có thể tăng tối đa đến một mức nào đó (điểm giới hạn là vị trí mà tất
cả các phần xử lý song song đều được hoàn thành trong một chu trình xử lý)
Cho một chương trình máy tính thực hiện 2 triệu lệnh (instructions) dùng CPU 400-MHz Chương trình gồm có bốn loại lệnh khác nhau Các lệnh này có CPI và tỷ lệ theo bảng như sau:
Toán học (Arithmetic and logic) 1 50
Yêu cầu: tính CPI trung bình, MIPS (1,0 điểm)
- CPI trung bình = ( 1 0,5 ) + (2 0,18 ) + (4 0,22 ) + ( 8 0,1 ) = 2,54
So sánh hiệu suất của ba máy tính A, B, C theo bảng sau:
Máy tính A Máy tính B Máy tính C
Trang 4Chương trình 2 1000 100 20
Trong bảng trên, thời gian xử lý được tính theo giây (seconds), với 100,000,000 lệnh được thực thi trong mỗi chương trình.
Yêu cầu: tính MIPS cho mỗi máy tính với mỗi chương trình; tính giá trị trung bình arithmetic và harmonic và xếp hạng các máy tính dựa theo các giá trị trung bình trên (1,0 điểm)
- Áp dụng công thức : MIPS = = =
MIPS của máy tính A : MIPS của máy tính B : MIPS của máy tính C :
MIPSA1 = = 100 ; MIPSB1 = = 10 ; MIPSC1 = = 5
MIPSA2 = = 0,1 ; MIPSB2 = = 1 ; MIPSC2 = = 5
MIPSA3 = = 0,2 ; MIPSB3 = = 0,1 ; MIPSC3 = = 2
MIPSA4 = = 1 ; MIPSB4 = = 0,125 ; MIPSC4 = = 1
Máy tính A Máy tính B Máy tính C
- Áp dụng công thức :
Trang 5AM mean = =
Giá trị trung bình arithmetic của máy A :
AMA = = 25,325
Giá trị trung bình arithmetic của máy B :
AMB = = 2,8
Giá trị trung bình arithmetic của máy C :
AMC = = 3,25
Arithmetic mean
Xếp hạng
- Áp dụng công thức :
0
( ) ( ) n ( ) i
Harmonic của máy A :
HMA = = 0,25
Trang 6Harmonic của máy B :
HMB = = 0,21
Harmonic của máy C :
HMC = = 2,1
Harmonic mean
Xếp hạng
Câu số 3
Trả lời
Giải thích chu kỳ lệnh cơ bản, giải thích ví dụ minh họa cách thực thi lệnh trong máy tính (có thể dùng hình 3.5) (1,0 điểm)
- Thực thi một chương trình là lặp lại quá trình thực hiện từng chu kì lệnh , chu kì lệnh cơ bản có hai bước chính là ( Fetch Cycle ) chu kì lấy chỉ thị ( lấy chỉ thị mất khoảng một thời gian gọi là chu kì lấy chỉ thị ) và ( Execute Cycle ) chu kì thực thi( thực thi mất khoảng một thời gian gọi
là chu kì thực thi ) , ta cộng hai chu kì lại sẽ thành chu kì của một chỉ thị Sư thực thi chương trình bị kết thúc nếu máy bị tắt, có lỗi không thể phục hồi xuất hiện, hay chương trình đi đến một chỉ thị kết thúc nó
- ( Fetch Cycle ) Chu kì lấy chỉ thị :
Trang 7+ Vào đầu mỗi chu kỳ lệnh, bộ xử lý truy xuất một lệnh từ bộ nhớ
+ Thanh ghi bộ đếm chương trình (PC) chứa địa chỉ của lệnh được truy xuất tiếp theo
+ Bộ xử lý sau mỗi lần truy xuất 1 lệnh sẽ 7ang bộ đếm lên do đó nó sẽ truy xuất được lệnh tiếp theo vào lần sau
+ Lệnh vừa được truy xuất được tải vào thanh ghi lệnh
+ Bộ xử lý biên dịch lệnh và thi hành những hành động cần thiết
- ( Execute Cycle ) Chu kì thực thi :
+ Bộ xử lý–bộ nhớ : Dữ liệu truyền từ bộ xử lý đến bộ nhớ hoặc ngược lại
+ Bộ xử lý–I/O : Dữ liệu truyền đến/đi từ thiết bị ngoại vi bằng cách truyền thông tin giữa bộ xử lý và module I/O
+ Xử lý dữ liệu : Bộ xử lý có thể thực hiện một số phép toán số học hoặc logic trên dữ liệu
+ Điều khiển : Đưa ra lệnh chỉ rõ thứ tự thực hiện các lệnh bị thay đổi
- Ví dụ minh họa cách thực thi lệnh trong máy tính :
+ Ở đoạn địa chỉ 300 , 301, 302 là Instruction
+ Ở đoạn địa chỉ 940 , 941 là Data
- Gồm có các thanh ghi: PC, IR, AC(accumulator): thanh ghi tạm
- Chỉ thị được cất giữ từ vị trí 0x300 trong bộ nhớ
- Trình bày hoạt động cộng nội dung từ bộ nhớ tại địa chỉ 0x940 với nội dung của địa chỉ 0x941, lưu kết quả tại địa chỉ 0x941
- Bước 1 : thanh ghi PC được lưu 300 , lưu đoạn lệnh 1940 ( 1 là lệnh nạp
Trang 8nội dung từ 940 vào AC ) vào thanh ghi IR
- Bước 2 : thực hiện lệnh nạp nội dung của 940 vào thanh ghi AC , PC tăng lên 1 tại thời điểm thực hiện lệnh (301)
- Bước 3 : lưu lệnh 5941 ( 5 là lệnh cộng nội dung từ 941 với nội dung của AC) vào thanh ghi IR
- Bước 4 : thực hiện lệnh cộng 0003 và 0002 thành 0005 và lưu tại AC , PC tăng lên 1 tại thời điểm thực hiện lệnh (302)
- Bước 5 : lưu lệnh 2941(ghi nội dung AC vào 941 ) vào thanh ghi IR
- Bước 6 : thực hiện lệnh ghi 0005 từ AC vào 941 , PC tăng lên 1 tại thời điểm thực hiện lệnh (303)
- Chương trình :
+ Nạp nội dung từ 0x940 vào AC
+ Cộng nội dung của 0x941 với AC
+ Ghi nội dung của AC vào 0x941
- Như vậy có 3 chu kỳ nạp và 3 chu kỳ thực thi
Giải thích ngắt trong hình 3.7(b) và 3.7(c ) (1,0 điểm)
Trang 9- Hình 3.7 (b) : 1, 2 ,3 là đoạn lệnh của chương trình cpu ; 3,4 là đoạn lệnh
của I/O commad Đầu tiên sau khi chạy đoạn lệnh 1 gặp lệnh write nên chuyển sang đoạn lệnh 4 (I/O command) để chạy ( lúc này CPU không làm
gì cả ) không để CPU phải đợi nên chuyển về lại đoạn lệnh 2 để tiếp tục thực thi đoạn lệnh 2a của chương trình, sau đó khi đoạn lệnh 4(I/O command) đã hoàn thành thì CPU sẽ bị ngắt để chuyển qua đoạn lệnh 5(Interrupt Handler) để kết thúc lệnh write sau đó lại chuyển về đoạn lệnh 2b để tiếp tục chương trình , sau đó lại gặp lệnh write số 2 nên lại chuyển sang đoạn lệnh 4 (I/O command) để chạy ( lúc này CPU không làm gì cả ) không để CPU phải đợi nên chuyển về lại đoạn lệnh 3a để tiếp tục thực thi đoạn chương trình chưa xong sau đó khi đoạn lệnh 4(I/O command) đã hoàn thành thì CPU sẽ bị ngắt để chuyển qua đoạn lệnh 5(Interrupt Handler)
để kết thúc lệnh write số 2 sau đó lại chuyển về đoạn lệnh 3b vừa nảy để tiếp tục chương trình và khi gặp lệnh write số 3 thì tiếp tục lặp lại như trên
- Hình 3.7 (c) : sau khi chạy đoạn lệnh 1 gặp lệnh write nên chuyển sang
đoạn lệnh 4 (I/O command) để chạy ( lúc này CPU không làm gì cả ) không
để CPU phải đợi nên chuyển về lại đoạn lệnh 2 để tiếp tục , sau khi chạy đoạn lệnh 2 xong khi đó gặp lệnh write lúc này CPU phải đợi ( 4 chưa hoàn thành ) khi đoạn lệnh 4(I/O command) đã hoàn thành thì chuyển qua đoạn lệnh 5(Interrupt Handler) để kết thúc lệnh write , sau đó mới có thể thực hiện lệnh write số 2, tiếp tục chuyển sang đoạn lệnh số 4 (I/O command) để chạy không để CPU phải đợi nên chuyển về lại đoạn lệnh 3 để tiếp tục , sau khi chạy đoạn lệnh 3 xong khi đó CPU phải đợi( 4 chưa hoàn thành ) khi đoạn lệnh 4(I/O command) đã hoàn thành thì chuyển qua đoạn lệnh 5 (Interrupt Handler) để kết thúc lệnh write số 2 và khi gặp lệnh write số 3 thì tiếp tục lặp lại như trên
Trong hệ thống máy tính multicore, QPI được dùng để làm gì, giải thích (1,0 điểm)
- Multicore :
+ Việc sử dụng nhiều bộ xử lý trên một chip cung cấp tiềm năng tăng hiệu suất cho máy mà không làm tăng tốc độ đồng hồ
+ Tăng gấp đôi số lượng bộ vi xử lý, tăng gấp đôi hiệu suất
+ Chiến lược: sử dụng hai bộ xử lý đơn giản trên 1 chip thay vì một bộ xử lý phức tạp
+ Với 2 bộ xử lý thì sẽ có bộ nhớ cache lớn hơn
+ Bộ nhớ cache lớn hơn sẽ cần phải chia làm hai hoặc ba cấp cache trên một
Trang 10+ Làm tăng hiệu suất của máy tính bằng cách chạy nhiều ứng dụng đồng thời Khoảng cách giảm giữa các lõi trên chip tích hợp cho phép độ trễ truy cập tài nguyên ngắn hơn và tốc độ bộ nhớ cache cao hơn khi so sánh với việc sử dụng bộ vi xử lý hoặc máy tính riêng biệt
+ Làm tăng khả năng hỗ trợ nội tại cho quá trình xử lý song song thực tế (trái ngược với ảo) trong các ứng dụng phần mềm riêng lẻ trên nhiều ứng dụng
+ Khắc phục sự gia tăng sinh nhiệt do Định luật Moore (tức là, các mạch nhỏ hơn làm tăng điện trở, tạo ra nhiều nhiệt hơn), do đó làm giảm nhu cầu làm mát Việc sử dụng xử lý đa lõi giúp giảm tiêu thụ điện năng (ít hao phí năng lượng dưới dạng nhiệt hơn), giúp tăng tuổi thọ của pin
+ Thực hiện đồng thời nhiều lệnh trên các core riêng biệt Nó có độ trễ thấp, các cores có thể giao tiếp nhanh hơn, vì tất cả chúng được tích hợp trên cùng một con chip, làm tăng tốc độ tổng thể cũng như thực hiện tính toán song song
+ Làm tăng tốc độ xử lý chung của hệ thống khi mà dữ liệu được phân thành nhiều gói nhỏ và phân cho các core xử lý song song cùng một lúc
QPI :
- QPI Kết nối đường dẫn nhanh :
+ Nhiều kết nối trực tiếp :Các kết nối từng cặp trực tiếp tới các thành phần khác giúp loại bỏ việc phân xử thường thấy trong các hệ thống truyền dẫn chia sẻ
+ Kiến trúc giao thức phân lớp: Các kết nối của bộ xử lý sử dụng kiến trúc giao thức phân lớp chứ không chỉ đơn giản sử dụng tín hiệu điều khiển thường thấy trong sắp xếp các bus chia sẻ
+ Truyền dữ liệu đóng gói : Dữ liệu được gửi thành 1 chuỗi các gói chúa tiêu đề điều khiển (header) và mã kiểm soát lỗi
- Lớp vật lý QPI :
+ Bao gồm các dây thực tế mang tín hiệu, cũng như mạch và logic để hỗ trợ các tính năng phụ trợ cần thiết trong quá trình truyền và nhận 1s và 0s Đơn
vị truyền ở lớp lật lý là 20 bit, được gọi là Phit (đơn vị vật lý)
- Lớp liên kết QPI :
+ Chức năng điều khiển luồng : cần thiết để đảm bảo rằng 1 thực thể OPI gửi không áp đảo 1 thực thể QPI nhận bằng cách gửi dữ liệu nhanh hơn khả năng xử lý dữ liệu và xoá bộ đệm để nhiều dữ liệu mới đến của phía nhận + Chức năng điều khiển lỗi: Phát hiện và khắc phục lỗi bit, do đó tránh cho các lớp cao hơn gặp lỗi bit
Trang 11- Lớp định tuyến QPI :
+ Được sử dụng để xác định đường đi mà một gói sẽ đi qua các kết nối hệ thống có sẵn
+ Xác định bởi phần sụn và mô tả các đường dẫn mà một gói tin có thể đi theo
- Lớp giao thức QPI :
+ Gói (packet) là đơn vị truyền
+ Một chức năng quan trọng được thực hiện ở lớp này là giao thức liên kết
bộ nhớ cache đảm bảo rằng các giá trị bộ - nhớ chính được giữ trong nhiều cache là phù hợp
+ Một tải gói dữ liệu điển hình là một khối dữ liệu được gửi đến hoặc từ một
bộ nhớ cache