To Chuc May Tinh [PDF]

  • 0 0 0
  • Gefällt Ihnen dieses papier und der download? Sie können Ihre eigene PDF-Datei in wenigen Minuten kostenlos online veröffentlichen! Anmelden
Datei wird geladen, bitte warten...
Zitiervorschau

CHƯƠNG 7: COMPUTER ORGANISATION - Tất cả các thuật ngữ viết tắt - Định luật Moore; kiến trúc Von Neumann; Định luật Amdahl; ....... Định luật Moore: Mật độ tích hợp transitor trên CPU sẽ tăng gấp 2 sau chu kỳ 18 tháng. Kiến trúc Von Neumann: https://bktt.vn/Ki%E1%BA%BFn_tr%C3%BAc_Neumann Máy tính gồm các thành phần chính : Bộ xử lý, bộ nhớ, hệ thống xuất nhập, tuyến hệ thống Định luật Amdahl: Sự tăng tốc của hệ thống máy tính phụ thuộc vào phần chậm nhất của hệ thống đó https://ktmt.github.io/blog/2014/05/19/dinh-luat-amdahl/ - Thành phần của CPU; Các bước trong chu trình thực hiện lệnh; Các thành phần của CPU Đơn vị điều khiển (CU – Control Unit) Là trung tâm điều hành, có nhiệm vụ giải mã các lệnh, tạo ra các tín hiệu điều khiển công việc của các bộ phận khác Đơn vị số học và logic (ALU – Arithmetic Logic Unit) Thực hiện phép toán số học (cộng, trừ, nhân, chia) và logic đơn giản (AND, OR, XOR, NOT) Tập thanh ghi (RF – Register Files) Dùng để lưu trữ các thông tin tạm thời, phục vụ cho hoạt động của CPU Bộ nhớ Cache Còn gọi là bộ nhớ đệm. Nằm bên trong CPU, có dung lượng nhỏ, có tốc độ truy xuất xấp xỉ bằng tốc độ làm việc của CPU. Bộ nhớ Cache giúp CPU hoạt động thường xuyên mà không phải ngắt quãng chờ dữ liệu. Bộ nhớ Cache được làm bằng Ram tĩnh, có giá thành rất cao. Có các loại là cache L1 (Level 1), L2 (Level 2), L3 (Level 3) • o Cache L1 (bên trong CPU) lưu trữ Data và Instruction. o Cache L2 (gần cache L1) chứa các lệnh và dữ liệu sẽ được thực thi tiếp theo. o Cache L3 (có thể có) chứa các dữ liệu từ RAM, thiết bị lưu trữ. Các bước trong chu trình thực hiện lệnh: • Đọc lệnh: Trong chu kì đọc lệnh, CU gửi nội dung PC vào bộ giải mã địa chỉ để đọc byte đầu tiên của lệnh lên một thanh ghi khác là thanh ghi lệnh. PC sẽ tăng lên một đơn vị để CU đọc byte tiếp theo. Độ dài các lệnh có thể khác nhau nhưng byte đầu tiên thường là nơi chứa mã lệnh. • Giải mã lệnh: CU căn cứ vào mã lệnh để đọc nốt các thông tin địa chỉ của lệnh và hoàn thành việc đọc lệnh, PC tiếp tục tăng theo số lượng byte đã đọc vào. • Đọc dữ liệu: Các địa chỉ dữ liệu được gửi vào bộ giải mã địa chỉ để đọc nội dung các đối tượng của lệnh gọi là các tóan hạng (operand) vào các thanh ghi dũ liệu. • Thực hiện lệnh: Phát tín hiệu điều khiển cho mạch chức năng của ALU thực hiện phép toán mà mã lệnh xác định. Sau đó quay lại chu kì đọc lệnh với nội dung mới của PC. Chú ý rằng nếu lệnh thực hiện là lệnh điều khiển thì giai đọan thực hiện này sẽ đặt địa chỉ lệnh sẽ thực hiện tiếp theo vào PC. Như vậy để thực hiện một lệnh nói chung phải đọc/ghi bộ nhớ nhiều lần. Có hai phương pháp tổ chức điều khiển: • Phương pháp điều khiển cứng. Ứng với mỗi lệnh máy có một mạch địên thực hiện lệnh đã cho theo các tín hiệu điều khiển.

vi lệnh.

• Phương pháp điều khiển vi chương trình. Mỗi lệnh được thực hiện thông qua các lệnh sơ cấp hơn gọi là các

Khi đó người ta chỉ phải thiết kế phần cứng ở mức vi lệnh. Ví dụ, phép đọc một byte trong bộ nhớ có thể lấy làm một vi lệnh. Như vậy, một phép tính có thể thực hiện bằng cách thi hành một dãy vi lệnh gọi là vi chương trình. Do đó, khi thay đổi lệnh chỉ cần thay đổi vi chương trình tương ứng mà không cần thay đổi cấu trúc vật lí của MTĐT. Các CPU ngày nay không thực hiện lệnh theo kiểu tuần tự như trên mà thường thực hiện song song nhiều quá trình. Thông tin nạp từ bộ nhớ có thể là cả một khối lên một khối thanh ghi. Một số CPU có cả cơ chế xử lý thông minh để dự đoán các khối chương trình hay dữ liệu sắp dùng đến để tải trước lên thanh ghi. Trong khi đang thực hiện lệnh thứ nhất thì một thành phần khác giải mã lệnh thứ hai và một thành phần khác tải lệnh thứ 3 lên thanh ghi. Cách thức xử lý này gọi là pipeline. Nhờ phương thức này mà nhiều bộ xử lý có thể thực hiện nhiều lệnh đồng thời. CHƯƠNG 8: PERFORMANCE - Tính Hệ số tăng tốc (Speed up); Tính thời gian của một xung (clock); Speed up: Độ tăng tốc tổng thể = Thời gian chạy trên CPU cũ / Thời gian chạy trên CPU mới = 1 / (1 - tỉ lệ chương trình cải thiện nhờ CPU mới + tỉ lệ chương trình cải thiện nhờ CPU mới / độ tăng tốc thu được từ CPU mới) Thời gian của một xung (clock): http://www.cit.ctu.edu.vn/~dtnghi/cod/ch2.pdf - Đơn vị đo hiệu năng của vi xử lý; Bộ vi xử lý (CPU) có thành phần chính là: Đơn vị số học / luận lý (ALU) và đơn vị điều khiển (CU) Xung nhịp n GHz, thực hiện n tỷ chu kỳ mỗi giây. Một vi xử lý có xung nhịp 2GHz thì thời gian của một xung (clock) là bao nhiêu? Answer: 0.5 ns - Cách tính thời gian thực thi một chương trình; CHƯƠNG 9: MIPS + CHƯƠNG 10: INSTRUCTION SET ARCHITECTURE - Các thuật ngữ viết tắt - Hiểu các câu lệnh trong MIPS; // integer abs $t0, $t6 -> trị tuyết đối add $t0, $t2, $t4 -> tổng sub $t0, $t2, $t4 -> hiệu mul $t0, $t2, $t4 -> nhân div $t2, $t4 -> chia mflo $t0 -> lấy phần nguyên mfhi $t0 -> lấy phần dư rem $t0, $t2, $t2 -> chia lấy dư // float abs.s $f0, $f6 add.s $f0, $f2, sub.s $f0, $f2, mul.s $f0, $f2, div.s $f0, $f2, sqrt.s $f0, $f6 // double

$f4 $f4 $f4 $f4

-> căn bậc 2

abs.d $f0, $f6 add.d $f0, $f2, sub.d $f0, $f2, mul.d $f0, $f2, div.d $f0, $f2, sqrt.d $f0, $f6

$f4 $f4 $f4 $f4

// data li $t0, i -> gán số nguyên la $s0, label -> gán địa chỉ l.s $f0, label -> gán số thực float l.d $f0, label -> gán số thực double lb $s0, i($s6) -> gán địa chỉ theo byte lw $s0, i($s6) -> gán địa chỉ theo word s.s $f6, i($s0) -> gán số thực float s.d $f6, i($s0) -> gán số thực double sb $s0, i($s6) -> gán địa chỉ theo byte sw $s6, i($s0) -> gán địa chỉ theo word // Jump j label -> run tại label beq $t2, $t4, label -> run bne $t2, $t4, label -> run blt $t2, $t4, label -> run ble $t2, $t4, label -> run bgt $t2, $t4, label -> run bge $t2, $t4, label -> run

tại tại tại tại tại tại

label label label label label label

nếu nếu nếu nếu nếu nếu

bằng không bằng bé hơn bé hơn hoặc bằng lớn hơn lớn hơn hoặc bằng

// bit not $t0, $t6 -> not or $t0, $t2, $t4 -> or and t0, $t2, $t4 -> and nor $t0, $t2, $t4 -> nor xor $t0, $t1, $t2 -> xor sll $t0, $t1, i -> dịch bit sang trái i lần srl $t0, $t1, i -> dịch bit sang phải i lần - Cách lưu các kết quả vào các thanh ghi; 4 lệnh add, sub, addu, subu dùng để cộng/trừ giá trị của 2 thanh ghi, và lưu kết quả vào thanh ghi đích. - MIPS có bao nhiêu thanh ghi, .... MIPS có 32 thanh ghi, mỗi thanh ghi 32 bit. - Các kiểu câu lệnh Assembly (R-type, I-Type, ....) R-type : add, sub I-Format : addi, lw, sw - Giới hạn nhảy của các câu lệnh "beq", "j", .... j : Giới hạn nhảy của lệnh “j” là một đoạn bộ nhớ có độ lớn 256MB - 2^25 câu lệnh beq: 2^15 câu lệnh - Độ dài mã lệnh trong kiến trúc MIPS; Các thành phần trong một mã lệnh Độ dài mã lệnh : 32 bit Thành phần : tên lệnh, các tham số truyền vào và kiểu của các tham số truyền vào - trong trường hợp này là kích thước của mỗi tham số truyền vào (vì không có khái niệm kiểu dữ liệu trong hợp ngữ). https://vietcodes.github.io/algo/mips#c%C3%A1c-c%E1%BA%A5u-tr%C3%BAc-l%E1%BB %87nh-c%E1%BB%A7a-mips - Khi một lệnh nhảy (branch) được thực thi do thoả mãn điều kiện nhảy/hoặc không thoả mãn Đk nhảy thì thanh ghi PC chứa giá trị gì? PC+4

- Các thành phần trong một lệnh máy, độ dài các thành phần mã lệnh loại 1 (IFormat) (VD: độ dài của phần opcode, immediate) ? op : 6 rs : 5 rt : 5 immediate : 16 Chương 11: DATAPATH &CONTROL - Chức năng của các tín hiệu RegDst; RegWrite; Sign Extend; WriteData; MemWrite; MemRead; MemToReg, ....... RegDst : Chọn thanh ghi đích để ghi dữ liệu RegWrite : Bật chế độ ghi dữ liệu vào thanh ghi đích Sign Extend : Chuyển số nguyên 16 bits thành 32 bits mà vẫn giữ nguyên giá trị MemRead : Cho phép bộ nhớ đọc các hướng dẫn tải. MemWrite : Cho phép ghi vào bộ nhớ cho các hướng dẫn lưu trữ. MemtoReg : Xác định giá trị được ghi đến từ đâu (kết quả ALU hoặc bộ nhớ trong Patterson và Hennessey). - Chức năng Cờ isZero từ bộ ALU? Quyết định xem lệnh nhảy (branch) có được thực thi hay không - Tín hiệu điều khiển ALUControl? (Độ dài? tạo thành từ cái gì?) Độ dài 4 bit Tạo thành từ : 6 bits Funct và 2 bits ALUop Chương 12: PIPELINING - So sánh sự khác nhau giữa kiến trúc pipeline với kiến trúc vi xử lý thông thường? Kiến trúc ống dẫn (pipeline) tiêu tốn ít thời gian hơn kiến trúc vi xử lý thông thường. - Hiểu kỹ về kỹ thuật pipelining: Pipelining là quá trình tích lũy lệnh từ bộ xử lý thông qua một đường ống . Nó cho phép lưu trữ và thực hiện các hướng dẫn trong một quy trình có trật tự. Nó còn được gọi là xử lý đường ống. Pipelining là một kỹ thuật mà nhiều lệnh được chồng lên nhau trong quá trình thực thi. - Hiểu các thuật ngữ data depencency, control depencency? Data Dependency : Thuật ngữ phụ thuộc dữ liệu (data depencency) trong kiến trúc pipeline nghĩa là một tình huống trong đó một câu lệnh chương trình (hướng dẫn) tham chiếu đến dữ liệu của một câu lệnh trước đó . Trong lý thuyết trình biên dịch, kỹ thuật được sử dụng để khám phá sự phụ thuộc dữ liệu giữa các câu lệnh (hoặc hướng dẫn) được gọi là phân tích sự phụ thuộc. Control Dependency : Thuật ngữ phụ thuộc điều khiển (control depencency) trong kiến trúc pipeline nghĩa là Trong một phương pháp tương tự, tất cả các lệnh điều khiển có điều kiện, bao gồm các nhánh có điều kiện, lệnh gọi, lệnh bỏ qua, v.v. ban hành các phụ thuộc vào các lệnh tiếp theo về mặt logic được gọi là các phụ thuộc điều khiển - Cách tính xung clock để thực thi một đoạn mã trên bộ vi xử lý đơn chu kỳ (single circle processor)? Chương 13: CACHE - Thứ tự về tốc độ truy xuất bộ nhớ của các loại bộ nhớ (Ram, cache, ROM, HDD, SSD, Register, ....) Tăng dần : Ổ đĩa cứng, RAM, cache, register - Chức năng Bộ nhớ Cache level 1, level 2 Level 1 sẽ kiểm tra xem Level 2 có những gì mình cần hay không, có lệnh gì từ người dùng đang chờ xử lý hay không. Sau đó Level 2 sẽ tiếp tục lấy thông tin từ Level 3 (một số dòng Laptop có hỗ trợ thêm Level 3), những thông tin này sẽ được lấy từ RAM, ổ cứng của Laptop…

- Spatial locality, temporal locality là gì? Spatial locality : Giả định là các đối tượng lân cận của đối tượng được truy cập thì cũng dễ có khả năng được truy xuất tiếp theo Temporal locality: Giả định là dữ liệu nào đang được sử dụng thì cũng sắp được cần đến - conflict miss, cold miss, miss penalty được sử dụng trong trường hợp nào? Cold miss : Khi dữ liệu lần đầu tiên được truy xuất và dữ liệu đó không có sẵn trong cache Conflic miss: Khi dữ liệu lần đầu tiên được truy xuất đã từng xuất hiện trong cache nhưng đã bị ghi đè Miss penalty: Khi CPU cần dữ liệu mà dữ liệu đó không có sẵn trong cache, CPU phải lấy dữ liệu từ bộ nhớ chính - Cấu tạo của từng bộ nhớ? (VD: Bộ nhớ Cache được cấu tạo từ loại phần tử nhớ nào: SDRAM hay DRAM hay SSD hay HDD, ....) Bộ nhớ cache được cấu tạo từ loại phần tử nhớ nào sau đây? Answer: SRAM - Các kỹ thuật ánh xạ bộ nhớ Cache (Set Associate Mapping, 4-ways Set Associate Mapping, Direct Mapping, ...) - Cách tính thời gian truy xuất trung bình của bộ vi xử lý? (VD: Một bộ vi xử lý có tỉ lệ trật cache (cache miss) là 65%. Thời gian truy xuất bộ nhớ cache là 2 ns, thời gian truy xuất bộ nhớ chính là 18 ns. Thời gian truy xuất trung bình của bộ vi xử lý này là bao nhiêu?) Answer: 13.7 (with margin: 0.1) Chương 14: VIRTUAL MEMORY & INPUT/OUTPUT - Định nghĩa về Bộ nhớ ảo; các thành phần nào quản lý bộ nhớ ảo? Ưu điểm của bộ nhớ ảo? Bộ nhớ ảo : Bộ nhớ ảo là một vùng thuộc không gian lưu trữ của bộ nhớ phụ hệ thống máy tính (chẳng hạn như ổ cứng HDD hoặc SSD). Nó hoạt động như thể là một phần của RAM hoặc bộ nhớ chính hệ thống. - Page fault, page table, Thuật toán thay trang LRU (Least Recently Used)/ FIFO là gì? Page Fault là Lỗi trang. Page table : Để ánh xạ giữa các trang của không gian bộ nhớ ảo đến các frame của bộ nhớ vật lý, kernel tạo ra 1 bảng trang (page table) cho mỗi tiến trình. Mỗi entry của page table ứng với 1 trang của bộ nhớ ảo cho phép chỉ ra vị trí của trang đó trong RAM hoặc chỉ ra nó đang nằm ở phân vùng swap của ổ cứng. Least-recently-used(LRU) : Với mỗi trang, ghi nhận thời điểm cuối cùng trang được truy cập, trang được chọn để thay thế sẽ là trang lâu nhất chưa được truy xuất. - Liệt kê các thiết bị xuất/nhập (IO). - Chức năng, nhiệm vụ của BUS trong hệ thống máy tính? tuyến BUS nào có tốc độ Cao nhất/Thấp nhất? Bus điều khiển nhận dữ liệu từ một bên CPU và chuyển đến bên kia nơi chứa các thiết bị ngoại vi, vì vậy chuyển gánh nặng giao thức truyền thông tin từ chính CPU. Điều này cho phép bên chứa CPU và bộ nhớ tách riêng biệt với các thiết bị bus. Các thiết bị bus có thể liên lạc với nhau mà không sự can thiệp của CPU.