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
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Trang 7
Trang 8
Trang 9
Trang 10
Tải về để xem bản đầy đủ
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
+ 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:
- bai_giang_kien_truc_may_tinh_chuong_14_chuc_nang_va_cau_truc.pdf