Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương

1. Tổ chức bộ xử lý

 Truy xuất lệnh: Bộ xử lý đọc lệnh từ bộ nhớ (thanh ghi, bộ nhớ

cache, bộ nhớ chính).

 Giải mã lệnh: Lệnh được giải mã để xác định hành động nào được

yêu cầu.

 Truy xuất dữ liệu: Việc thực thi một lệnh có thể yêu cầu đọc dữ liệu

từ bộ nhớ hoặc một mô-đun I / O

 Xử lý dữ liệu: Việc thực thi một lệnh có thể yêu cầu thực hiện một

số phép toán số học hoặc logic trên dữ liệu.

 Ghi dữ liệu: Kết thúc việc thực hiện có thể yêu cầu ghi dữ liệu vào

bộ nhớ hoặc một mô-đun I / O.

Để thực hiện những việc này, CPU cần lưu tạm thời một số dữ liệu 

cần một bộ nhớ nhỏ bên trong

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 1

Trang 1

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 2

Trang 2

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 3

Trang 3

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 4

Trang 4

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 5

Trang 5

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 6

Trang 6

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 7

Trang 7

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 8

Trang 8

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 9

Trang 9

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương trang 10

Trang 10

Tải về để xem bản đầy đủ

pdf 47 trang xuanhieu 5740
Bạn đang xem 10 trang mẫu của tài liệu "Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương

Bài giảng Kiến trúc máy tính - Chương 14: Chức năng và cấu trúc Vi xử lý - Nguyễn Hằng Phương
+ 
 Chương 14 
 Chức năng và cấu trúc Vi xử lý 
+ 
 1. Tổ chức bộ xử lý NỘI DUNG 
 2. Khối điều khiển CU 
 3. Tổ chức thanh ghi 
 4. Chu kỳ lệnh 
 Chu kỳ gián tiếp 
 Dòng dữ liệu 
 5. Pipelining lệnh 
 Chiến lược Pipelining 
 Hiệu suất Pipelining 
 Nguy cơ Pipelining 
 Đối phó với nhánh 
+ 
 1. Tổ chức bộ xử lý 
 a. Nhiệm vụ của CPU: 
  Truy xuất lệnh: Bộ xử lý đọc lệnh từ bộ nhớ (thanh ghi, bộ nhớ 
 cache, bộ nhớ chính). 
  Giải mã lệnh: Lệnh được giải mã để xác định hành động nào được 
 yêu cầu. 
  Truy xuất dữ liệu: Việc thực thi một lệnh có thể yêu cầu đọc dữ liệu 
 từ bộ nhớ hoặc một mô-đun I / O 
  Xử lý dữ liệu: Việc thực thi một lệnh có thể yêu cầu thực hiện một 
 số phép toán số học hoặc logic trên dữ liệu. 
  Ghi dữ liệu: Kết thúc việc thực hiện có thể yêu cầu ghi dữ liệu vào 
 bộ nhớ hoặc một mô-đun I / O. 
 Để thực hiện những việc này, CPU cần lưu tạm thời một số dữ liệu 
 cần một bộ nhớ nhỏ bên trong 
 b. Các thành phần chính của CPU 
• khối số học và logic (ALU): 
 thực hiện tính toán hoặc xử 
 lý dữ liệu (chương 10) 
• khối điều khiển (CU): 
 • kiểm soát việc di 
 chuyển dữ liệu và lệnh 
 vào/ra CPU 
 • điều khiển hoạt động 
 của ALU 
• thanh ghi: bộ nhớ bên trong 
 CPU, gồm một tập hợp các 
 vị trí lưu trữ 
• Đơn vị nối ghép bus 
 Sơ đồ cấu trúc cơ bản của CPU 
• Bus nội bộ 
Cấu trúc bên trong CPU 
 2. Khối điều khiển CU 
Chức năng 
. „ Điều khiển nhận lệnh từ bộ nhớ đưa vào thanh ghi lệnh 
. „ Tăng nội dung của PC để trỏ sang lệnh kế tiếp 
. „ Giải mã lệnh đã được nhận để xác định thao tác mà 
 lệnh yêu cầu 
. „ Phát ra các tín hiệu điều khiển thực hiện lệnh 
. „ Nhận các tín hiệu yêu cầu từ bus hệ thống và đáp ứng 
 với các yêu cầu đó. 
Mô hình kết nối đơn vị điều khiển 
Mô hình kết nối đơn vị điều khiển 
+ 
 Tín hiệu đến CU Tín hiệu đi ra từ CU 
 . Clock: tín hiệu nhịp từ  Các tín hiệu điều khiển bên 
 mạch tạo dao động bên trong CPU: 
 ngoài. 
  Điều khiển các thanh ghi 
 . „ Mã lệnh từ thanh ghi 
  Điều khiển ALU 
 lệnh đưa đến để giải mã. 
  „ Các tín hiệu điều khiển 
 . „ Các cờ từ thanh ghi cờ 
 bên ngoài CPU: 
 cho biết trạng thái của 
 CPU.  Điều khiển bộ nhớ 
 . „ Các tín hiệu yêu cầu từ  Điều khiển các mô-đun 
 bus điều khiển vào-ra 
+ 
 3. Tổ chức thanh ghi 
  Thanh ghi: Không gian lưu trữ tạm thời phục vụ cho hoạt động 
 ở thời điểm hiện tại của CPU 
  Được coi là cấp bộ nhớ cao nhất trong hệ thống phân cấp. 
  Số lượng thanh ghi nhiều tăng hiệu năng của CPU 
  Phân thành 2 loại: 
  Thanh ghi hiển thị với người dùng: 
  Lập trình được, giúp giảm thiểu các tham chiếu bộ nhớ chính 
  Thanh ghi điều khiển và trạng thái: 
  Được CU sử dụng để điều khiển hoạt động của CPU và các 
 chương trình hệ điều hành sử dụng để kiểm soát việc thực thi 
 chương trình 
Thanh ghi hiển thị với người dùng 
. Được tham chiếu bằng ngôn ngữ máy mà CPU thực hiện 
. Phân loại theo chức năng : 
 . Thanh ghi đa năng có thể chứa địa chỉ hoặc dữ liệu. 
 . Thanh ghi dữ liệu : chứa tạm thời dữ liệu, không được 
 sử dụng trong tính toán địa chỉ toán hạng. 
 . Thanh ghi địa chỉ : quản lý địa chỉ của ngăn nhớ hay 
 cổng vào-ra. 
 . Thanh ghi mã điều kiện (trạng thái) 
 . còn gọi là thanh ghi cờ (flag) 
 . Là các bit do phần cứng của bộ xử lý đặt theo kết 
 quả của hoạt động 
a. Thanh ghi đa năng 
. Có thể được lập trình viên gán cho nhiều chức năng khác 
 nhau 
. Có thể được sử dụng cho dữ liệu hoặc định địa chỉ 
. So sánh thanh ghi đa năng vs chuyên dụng 
 . Đa năng: 
 . Tăng lựa chọn cho lập trình viên và linh hoạt 
 . Tăng độ phức tạp và kích thước lệnh 
 . Chuyên dụng: 
 . Lệnh nhỏ hơn, nhanh hơn 
 . Ít linh hoạt hơn 
b. Thanh ghi dữ liệu 
. Chứa các dữ liệu tạm thời hoặc các kết quả trung gian 
. Cần có nhiều thanh ghi dữ liệu 
. „Các thanh ghi số nguyên: 8, 16, 32, 64 bit 
. „Các thanh ghi số dấu phẩy động 
c. Thanh ghi địa chỉ 
. Bộ đếm chương trình PC (Program Counter) 
. Con trỏ dữ liệu DP (Data Pointer) 
. Con trỏ ngăn xếp SP (Stack Pointer) 
. Thanh ghi cơ sở và thanh ghi chỉ số (Base Register & 
 Index Register) 
Bộ đếm chương trình PC 
. Giữ địa chỉ của lệnh tiếp theo 
 sẽ được nhận vào. 
. Sau khi một lệnh được nhận 
 vào, nội dung PC tự động 
 tăng để trỏ sang lệnh kế tiếp. 
Thanh ghi con trỏ dữ liệu 
. Chứa địa chỉ của ngăn nhớ 
 dữ liệu mà CPU muốn truy 
 nhập 
. Thường có một số thanh ghi 
 con trỏ dữ liệu 
Con trỏ ngăn xếp SP (Stack Pointer) 
. Chứa địa chỉ của ngăn nhớ đỉnh 
 ngăn xếp 
. Khi cất một thông tin vào ngăn xếp: 
 . Nội dung của SP tự động giảm 
 . Thông tin được cất vào ngăn 
 nhớ mà SP trỏ 
. Khi lấy một thông tin ra khỏi ngăn 
 xếp: 
 . Thông tin được đọc từ ngăn 
 nhớ mà SP trỏ 
 . Nội dung của SP tự động tăng 
. „ Khi ngăn xếp rỗng, SP trỏ vào đáy 
Thanh ghi cơ sở và 
thanh ghi chỉ số 
. Thanh ghi cơ sở: chứa địa chỉ của ngăn 
nhớ cơ sở (địa chỉ cơ sở) 
. Thanh ghi chỉ số: chứa độ lệch địa chỉ giữa 
ngăn nhớ mà CPU cần truy nhập so với ngăn 
nhớ cơ sở (chỉ số) 
. Địa chỉ của ngăn nhớ cần truy nhập = địa chỉ cơ sở + chỉ số 
d. Từ trạng thái chương trình 
 (PSW) Program Status Word 
. Thanh ghi hoặc tập hợp thanh ghi chứa thông tin trạng thái và 
 mã điều kiện 
. Các trường hoặc cờ phổ biến gồm: 
 . Cờ Zero: được thiết lập lên 1 khi kết quả của phép toán bằng 0. 
 . Cờ Sign: được thiết lập lên 1 khi kết quả phép toán nhỏ hơn 0 
 . Cờ Carry: được thiết lập lên 1 nếu phép toán có nhớ ra ngoài bit 
 cao nhất cờ báo tràn với số không dấu. 
 . Cờ Overflow: được thiết lập lên 1 nếu cộng hai số nguyên cùng 
 dấu mà kết quả códấu ngược lại cờ báo tràn với số có dấu 
 . Cờ Interrupt (IF): 
 . Nếu IF = 1 CPU ở trạng thái cho phép gián đoạn 
 . Nếu IF = 0 CPU ở trạng thái cấm gián đoạn 
+ 
 Thanh ghi điều khiển và trạng thái 
 Bốn thanh ghi cần thiết để thực thi lệnh: 
  Bộ đếm chương trình (PC) 
  Chứa địa chỉ của lệnh sắp được truy xuất 
  Thanh ghi lệnh (IR) 
  Bao gồm hướng dẫn được truy xuất gần đây nhất 
  Thanh ghi địa chỉ bộ nhớ (MAR) 
  Chứa địa chỉ của một vị trí trong bộ nhớ 
  Thanh ghi đệm bộ nhớ (MBR) 
  Chứa một từ dữ liệu sắp được ghi vào bộ nhớ hoặc từ vừa được đọc 
 Ví dụ tổ chức 
thanh ghi CPU 
 4. Chu kỳ lệnh 
Bao gồm các giai đoạn sau: 
. Truy xuất 
 . Đọc lệnh tiếp theo từ bộ nhớ vào bộ xử lý 
. Thi hành 
 . Giải nghĩa opcode 
 . Truy xuất toán hạng 
 . Thực hiện lệnh 
 . Cất toán hạng 
. Gián đoạn 
 . Nếu CPU cho phép gián đoạn và nhận được tín hiệu gián 
 đoạn, lưu trạng thái xử lý hiện tại và phục vụ gián đoạn đó. 
Chu kỳ lệnh 
 • Có thể cần truy 
 cập bộ nhớ để 
 truy xuất toán 
 hạng 
 • Địa chỉ gián 
 tiếp thì cần 
 nhiều truy cập 
 bộ nhớ hơn 
 • Có thể coi việc 
 truy xuất địa chỉ 
 gián tiếp như 
 một giai đoạn 
 lệnh khác 
Sơ đồ trạng thái Chu kỳ lệnh 
Truy Truy xuất 
xuất toán hạng 
Luồng dữ liệu, chu kỳ truy xuất 
 • PC chứa địa chỉ của lệnh 
 tiếp theo 
 • Địa chỉ chuyển đến MAR 
 • Địa chỉ đặt lên bus địa chỉ 
 • Khối điều khiển yêu cầu 
 một lần đọc bộ nhớ 
 • kết quả được đặt trên bus 
 dữ liệu, sao chép vào MBR 
 rồi chuyển tới IR 
 • PC được tăng lên 1 
Chu kỳ thi hành 
 . Giải mã lệnh: 
 • Lệnh từ thanh ghi lệnh IR được đưa đến CU 
 • CU giải mã lệnh để xác định thao tác phải thực hiện 
 . Truy xuất dữ liệu: tương tự truy xuất lệnh 
 . Thi hành lệnh: 
 • Có nhiều hình thức, phụ thuộc vào opcode 
 • Có thể bao gồm: 
 – đọc hoặc ghi bộ nhớ 
 – Vào/ra 
 – truyền dữ liệu giữa các thanh ghi 
 – Hoạt động của ALU 
Luồng dữ liệu, chu kỳ gián tiếp 
 • kiểm tra nội dung của IR 
 • Nếu địa chỉ gián tiếp thì thực 
 hiện chu kỳ gián tiếp 
 – N bit ngoài cùng bên phải 
 của MBR chuyển tới MAR 
 – khối điều khiển yêu cầu 
 một lần đọc bộ nhớ 
 – Chuyển toán hạng mong 
 muốn vào MBR 
Luồng dữ liệu, chu kỳ gián đoạn 
 • PC hiện tại được 
 lưu lại để có thể tiếp 
 tục hoạt động sau 
 gián đoạn 
 • Nội dung của PC 
 chuyển sang MBR 
 • Vị trí bộ nhớ đặc biệt (VD: 
 con trỏ ngăn xếp) được nạp 
 vào MAR 
 • MBR ghi vào bộ nhớ 
 • Địa chỉ của trình xử lý gián 
 đoạn được nạp vào PC 
 • Lệnh tiếp theo (lệnh đầu 
 tiên trong xử lý gián đoạn ) 
 được truy xuất 
5. Đường ống lệnh (Pipelining) 
 . Tương tự việc sử dụng dây chuyền lắp ráp trong nhà 
 máy sản xuất 
 . Các đầu vào mới được tiếp nhận ở một phía trước khi 
 các đầu vào trước đây trở thành đầu ra ở phía còn lại 
 . Một lệnh có nhiều giai đoạn có thể sử dụng pipelining 
 . Chia chu trình lệnh thành các công đoạn và cho phép 
 thực hiện gối lên nhau 
Pipeline hai giai đoạn 
• 2 giai đoạn: 
 • Truy xuất: truy cập bộ nhớ chính 
 • Thi hành: thường không truy cập bộ nhớ chính 
• Có thể truy xuất lệnh tiếp theo trong khi thực thi lệnh hiện tại 
 truy xuất lệnh trước (prefetch) 
• Cần thêm thanh ghi để lưu trữ dữ liệu giữa các giai đoạn 
• Tăng tốc việc thực thi lệnh 
 Pipelining 
Giả sử việc thực hiện lệnh gồm 6 giai đoạn: 
  Truy xuất lệnh - Fetch instruction (FI) 
  Giải mã lệnh - Decode instruction (DI) 
  Tính địa chỉ toán hạng - Calculate operands (CO) 
  Truy xuất toán hạng - Fetch operands (FO) 
  Thi hành lệnh - Execute instruction (EI) 
  Ghi toán hạng - Write operand (WO) 
Biểu đồ thời gian của hoạt động pipeline lệnh 
 Hazard trong Pipeline 
. Xảy ra khi pipeline, hoặc một phần của pipeline, phải đình 
 trệ bởi vì điều kiện không cho phép tiếp tục thực hiện 
. Còn được gọi là pipeline bubble 
. Có ba loại hazard: 
 . Tài nguyên 
 . Dữ liệu 
 . Điều khiển 
 Hazard 
 tài nguyên 
 Hazard tài nguyên xảy ra 
 khi hai hoặc nhiều lệnh 
 đã ở trong đường ống 
 cần dùng cùng một tài 
 nguyên 
 Các lệnh này phải được 
 thực hiện nối tiếp thay vì 
 song song với một phần 
 của đường ống 
 Còn được gọi là Hazard 
 cấu trúc 
 RAW 
 Hazard 
+ 
 Hazard dữ liệu 
 Xảy ra khi có xung đột trong việc truy cập 1 vị trí toán hạng 
 (Lệnh sau sử dụng dữ liệu kết quả của lệnh trước) 
+ 
 Các loại Hazard dữ liệu 
  Read after write (RAW), hoặc true dependency 
  Một lệnh sửa đổi một thanh ghi hoặc vị trí bộ nhớ 
  Lệnh tiếp theo đọc dữ liệu trong bộ nhớ hoặc vị trí thanh ghi 
  Hazard xảy ra nếu việc đọc diễn ra trước khi hoạt động ghi hoàn tất 
  Write after read (WAR), or antidependency 
  Một lệnh đọc một thanh ghi hoặc vị trí bộ nhớ 
  Lệnh tiếp theo ghi vào vị trí đó 
  Hazard xảy ra nếu thao tác ghi hoàn thành trước khi có thao tác đọc 
  Write after write (WAW), or output dependency 
  Hai lệnh cùng ghi vào 1 vị trí 
  Hazard xảy ra nếu các thao tác ghi diễn ra theo thứ tự ngược với trình 
 tự dự định 
+ 
 Hazard điều khiển 
  Còn được gọi là Hazard nhánh 
  Xảy ra khi đường ống đưa ra quyết định sai về dự báo nhánh 
  Đưa lệnh đáng ra sau đó phải được loại bỏ vào đường ống 
  Giải pháp với các nhánh có điều kiện: 
  Nhiều luồng 
  Mục tiêu nhánh truy xuất trước 
  Loop buffer 
  Dự báo nhánh 
  Nhánh trễ 
 a. Nhiều luồng 
. Một đường ống đơn giản gặp khó khăn khi lệnh rẽ nhánh 
 vì nó phải chọn một trong hai lệnh để truy xuất tiếp theo 
 và có thể chọn sai. 
. 1 Cách ép buộc là nhân rộng phần mở đầu của đường 
 ống và cho phép đường ống truy xuất cả hai lệnh, sử 
 dụng hai luồng. 
. Có hai vấn đề với cách làm này: 
 . Trong nhiều đường ống có trễ tranh chấp để truy cập 
 vào thanh ghi và bộ nhớ. 
 . Lệnh nhánh thêm vào có thể đi vào đường ống (một 
 trong hai luồng) trước khi quyết định lệnh nhánh ban 
 đầu được giải quyết. 
 b. Mục tiêu nhánh truy xuất trước 
 . Khi nhận ra 1 nhánh điều kiện, mục 
 tiêu của nhánh được truy xuất trước, 
 bổ sung vào lệnh theo sau nhánh. 
 . Mục tiêu này được lưu lại cho tới khi 
 lệnh rẽ nhánh được thực thi. 
+ . Nếu nhánh này được chọn, mục tiêu 
 đã được truy xuất trước. 
 . IBM 360/91 sử dụng cách này 
+ 
 c. Bộ đệm vòng lặp 
  bộ nhớ nhỏ, tốc độ rất cao được duy trì bởi tầng truy xuất lệnh 
 trong pipeline và chứa n lệnh truy xuất gần đây nhất, theo thứ tự 
  Lợi ích: 
  lệnh được truy xuất theo trình tự là có sẵn mà không phải tốn thời 
 gian truy cập bộ nhớ thông thường 
  Nếu có một rẽ nhánh tới mục tiêu nằm trước địa chỉ lệnh rẽ nhánh 
 một vài vị trí, mục tiêu đó đã ở trong bộ đệm 
  Cách này đặc biệt phù hợp để xử lý vòng lặp 
  nguyên tắc tương tự với bộ nhớ cache dành riêng cho lệnh 
  Điểm khác biệt: 
  bộ đệm vòng lặp chỉ trữ các lệnh theo trình tự 
  kích thước nhỏ hơn nhiều; do đó giảm chi phí 
Loop Buffer 
+ 
 d. Dự đoán nhánh 
  Nhiều kỹ thuật được sử dụng để dự đoán một nhánh sẽ 
 được chọn hay không: 
 1. Predict never taken  Các phương pháp tĩnh 
 2. Predict always taken  Không phụ thuộc vào lịch sử thực thi 
 tính tới thời điểm có lệnh rẽ nhánh có 
 3. Predict by opcode 
 điều kiện 
 1. Taken/not taken switch  Các phương pháp động 
 2. Branch history table  phụ thuộc vào lịch sử thực thi 
+ 
 Lược đồ dự 
 đoán nhánh 
Sơ đồ trạng thái dự đoán nhánh 
+ 
 5. Đối phó với 
 nhánh 
+ Tổng kết 
 Cấu trúc và Chức 
 năng Bộ xử lý 
 Chương 14 
  Pipelining lệnh 
  Tổ chức bộ xử lý 
  Chiến lược Pipelining 
  Tổ chức thanh ghi  Hiêu suất Pipeline 
  Thanh ghi hiển thị người dùng  Pipeline hazard 
  Thanh ghi điều khiển và trạng  Xử lý rẽ nhánh 
 thái 
  Pipelining Intel 80486 
  Chu kỳ lệnh 
  Chu kỳ gián tiếp 
  Luồng dữ liệu 
  Họ vi xử lý x86 
  Tổ chức thanh ghi 
  Xử lý gián đoạn 
Câu hỏi chương 14 
1. Chức năng của thanh ghi bộ xử lý? 
2. Thanh ghi hiển thị với người dùng thường hỗ trợ những 
 loại dữ liệu nào ? 
3. Mã điều kiện là gì? 
4. Từ trạng thái chương trình PSW là gì? 
5. Tại sao một pipeline lệnh hai giai đoạn không rút ngắn một 
 nửa thời gian chu kỳ lệnh so với khi không sử dụng 
 pipeline? 
6. Liệt kê và giải thích ngắn gọn các giải pháp để pipeline 
 lệnh giải quyết vấn đề đối với lệnh rẽ nhánh có điều kiện. 
7. Dự báo nhánh sử dụng các bit lịch sử như thế nào? 

File đính kèm:

  • pdfbai_giang_kien_truc_may_tinh_chuong_14_chuc_nang_va_cau_truc.pdf