Hiệu năng, chu kỳ lấy lệnh-thực thi và ngắt
Đã giới thiệu| English | Ý nghĩa |
|---|---|
| interrupt/ˈɪntərʌpt/ | Ngắt |
| clock speed/klɒk spiːd/ | tốc độ xung nhịp |
| fetch-execute cycle/fetʃ ˈeksɪkjuːt ˈsaɪkl/ | Chu kỳ lấy lệnh-thực thi |
| cores/kɔːz/ | Lõi xử lý |
| cache/kæʃ/ | cache |
| word size/wɜːd saɪz/ | Độ dài từ |
| port/pɔːt/ | Cổng kết nối |
| peripheral/pəˈrɪfərəl/ | Thiết bị ngoại vi |
| register transfer notation/ˈredʒɪstə ˈtrænsfɜː nəʊˈteɪʃn/ | Ký hiệu truyền thanh |
| stack/stæk/ | Ngăn xếp |
| interrupt service routine/ˈɪntərʌpt ˈsɜːvɪs ruːˈtiːn/ | Chương trình phục vụ ngắt |
| interrupt register/ˈɪntərʌpt ˈredʒɪstə/ | Thanh ngắt |
Tại sao laptop của bạn dừng mọi thứ khi bạn nhấn phím
- Bộ xử lý chạy hàng tỷ chu kỳ mỗi giây. Nếu nó phải dừng lại và hỏi bàn phím "có gì chưa?" giữa các lệnh, nó sẽ lãng phí hầu hết các chu kỳ để hỏi han.
- Thay vào đó, bàn phím gửi một ngắt interrupt. Bộ xử lý hoàn thành lệnh hiện tại, lưu vị trí của mình, xử lý phím, và trở về như thể chẳng có gì đã xảy ra.
- Cơ chế đơn giản này là cách một bộ xử lý duy nhất trông có vẻ như đang chạy nhạc, trình duyệt và gõ phím của bạn cùng lúc.
- Bài học này bao gồm những yếu tố làm cho bộ xử lý nhanh, cách nó kết nối với thiết bị, chính xác cách nó thực thi một lệnh, và cách một ngắt interrupt cắt ngang.
Những yếu tố ảnh hưởng đến hiệu suất
- Tốc độ xung nhịp (Clock speed): nhiều chu trình lấy-thực thi hơn mỗi giây, do đó nhiều lệnh hơn mỗi giây, cho đến khi nhiệt độ đặt ra giới hạn.
- Số lượng nhân (cores): mỗi nhân lấy và thực thi lệnh riêng của nó cùng lúc, do đó nhiều chương trình hoặc luồng chạy song song. Một chương trình phải được viết để sử dụng chúng, vì vậy việc gấp đôi số nhân không gấp đôi tốc độ.
- Độ rộng bus: bus dữ liệu rộng hơn chuyển nhiều bit mỗi lần truyền, nên ít lần truyền hơn; bus địa chỉ rộng hơn truy cập được nhiều bộ nhớ hơn.
- Bộ nhớ đệm (Cache): bộ nhớ nhỏ, tốc độ cao nằm cạnh bộ xử lý, chứa các lệnh và dữ liệu được sử dụng gần đây nhất, giúp giảm số lần truy cập RAM chậm. Kích thước từ (word size), lượng RAM và loại lưu trữ cũng hỗ trợ.
Chọn tất cả các yếu tố ảnh hưởng đến hiệu năng CPU.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Tốc độ xung nhịp, nhân và bộ nhớ đệm (cùng kích thước từ, RAM, bộ lưu trữ và độ rộng bus) đều ảnh hưởng đến hiệu năng. Màu vỏ thì không.
CPU đa nhân đặc biệt hữu ích cho:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Nhiều nhân chạy các nhiệm vụ song song. Một công việc thuần túy một luồng sẽ hưởng lợi nhiều hơn từ tốc độ cao hơn trên mỗi nhân.
____ memory là bộ lưu trữ nhỏ, nhanh bên cạnh bộ xử lý chứa các lệnh và dữ liệu vừa dùng gần đây, nên ít phải đi lại chậm chạp đến RAM hơn.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Nhiều bộ nhớ đệm hơn có nghĩa là tập hợp đang làm việc nằm nhiều hơn bên cạnh bộ xử lý, đó là lý do nó xuất hiện trong mọi so sánh hiệu năng.
Ví dụ minh họa: "giải thích tại sao máy tính mới nhanh hơn"
- So sánh hai thông số kỹ thuật từng dòng một, kèm theo lý do cho mỗi điểm.
- 3.8 GHz so với 2.4 GHz: nhiều chu kỳ hơn mỗi giây, nên thực thi nhiều lệnh hơn mỗi giây.
- 8 nhân so với 4: có thể lấy và thực thi gấp đôi số lệnh cùng lúc, đối với phần mềm sử dụng đa nhân.
- 16 MB bộ nhớ đệm so với 4 MB: nhiều dữ liệu đang hoạt động hơn được giữ sát bộ xử lý, nên ít phải chờ đợi RAM. Mỗi dòng tương ứng hai điểm: yếu tố và hệ quả của nó.
Cổng kết nối
- Một cổng là ổ cắm vật lý kết nối với một thiết bị ngoại vi.
- USB (Universal Serial Bus) là đa năng: dùng cho bàn phím, ổ đĩa, điện thoại. Tính năng cắm và chạy: máy tính tự phát hiện thiết bị, nhận diện, tải trình điều khiển và cấp nguồn mà không cần khởi động lại.
- HDMI (High Definition Multimedia Interface) truyền cả video và âm thanh số qua một cáp, nên không cần chuyển đổi sang tín hiệu tương tự và hình ảnh không bị giảm chất lượng. VGA (Video Graphics Array) là ổ cắm video tương tự cũ hơn.
Nối mỗi cổng với chức năng của nó.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Tín hiệu khác nhau, ổ cắm khác nhau: cáp HDMI sẽ không khít với cổng USB.
Giai đoạn lấy lệnh (Fetch)
- Trong mỗi lần thực thi lệnh, bộ xử lý chạy chu kỳ lấy-thực thi. Giai đoạn lấy lệnh diễn ra đầu tiên, và đề thi yêu cầu mô tả bằng ký hiệu truyền trạng thái registers.
MAR ← [PC] the address of the next instruction goes to the MAR
PC ← [PC] + 1 the PC now points to the following instruction
MDR ← [[MAR]] the instruction at that address is read into the MDR
CIR ← [MDR] the instruction is copied into the CIR for decoding
- Tín hiệu đọc di chuyển trên bus điều khiển, địa chỉ trên bus địa chỉ, và lệnh trở lại trên bus dữ liệu. PC được tăng ngay sau khi địa chỉ của nó được sao chép, để việc nhảy (jump) xảy ra sau này vẫn có thể ghi đè lên giá trị cũ.

PC → MAR → memory → MDR → CIR, trong đó PC được tăng trong quá trình
Sắp xếp các bước lấy lệnh theo thứ tự đúng.
Độ khó 3/5 · 200 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
PC → MAR, tăng PC, gửi tín hiệu đọc, sau đó lệnh truyền từ MDR → CIR sẵn sàng để giải mã.
PC được tăng trong giai đoạn lấy lệnh để chu kỳ tiếp theo sẽ lấy lệnh tiếp theo.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Việc tăng PC sớm có nghĩa là khi lệnh này thực thi, PC đã trỏ vào lệnh kế tiếp (trừ khi lệnh nhảy thay đổi).
Giải mã, thực thi, lặp lại
- Giải mã (Decode): đơn vị điều khiển xác định từ lệnh trong CIR đây là thao tác gì và toán hạng của nó nằm ở đâu.
- Thực thi (Execute): phép toán số học và logic được gửi đến ALU với kết quả trong ACC; lệnh load hoặc store di chuyển dữ liệu giữa bộ nhớ và register; lệnh jump ghi địa chỉ mới vào PC.
- Sau đó chu kỳ lặp lại từ
MAR ← [PC]. Ở cuối mỗi chu kỳ, bộ xử lý cũng kiểm tra xem có báo hiệu ngắt (interrupt) nào đang chờ hay không.
Một lệnh LOAD và một lệnh ADD di chuyển qua các register: lấy lệnh, giải mã, thực thi, lặp lại
Chu kỳ lấy lệnh-thực thi
Chạm vòng quanh loop mà CPU lặp lại hàng tỷ lần mỗi giây. Xem cách lấy lệnh sử dụng các thanh ghi PC/MAR/MDR/CIR, sau đó giải mã và thực thi tác động lên những gì đã được lấy.
Ví dụ minh họa: thực thi hai lệnh bằng ký hiệu
- Thực thi
LDD 200(tải nội dung của địa chỉ 200 vào ACC): thực hiệnMAR ← 200, sau đóMDR ← [[MAR]], rồiACC ← [MDR]. - Thực thi
ADD 201: thực hiệnMAR ← 201,MDR ← [[MAR]],ACC ← [ACC] + [MDR]. - Thực thi
STO 202: thực hiệnMAR ← 202,MDR ← [ACC],[[MAR]] ← [MDR]. - Mỗi dòng di chuyển một giá trị giữa hai nơi. Dấu ngoặc kép đôi luôn có nghĩa là "vị trí bộ nhớ có địa chỉ nằm trong MAR".
Sắp xếp thứ tự các phép chuyển đăng ký thực thi LDD 200.
Độ khó 3/5 · 200 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Địa chỉ được gửi đến MAR, nội dung của địa chỉ đó vào MDR, sau đó chuyển vào bộ tích lũy.
Báo hiệu ngắt (Interrupts)
- Một báo hiệu ngắt là tín hiệu làm tạm dừng chu kỳ bình thường để bộ xử lý có thể xử lý sự kiện khẩn cấp.
- Nguyên nhân: thiết bị phần cứng (phím bấm, bộ đệm máy in trống, gói tin mạng đến), lỗi phần mềm (chia cho 0, lệnh bất hợp lệ, tràn số học), bộ đếm thời gian của hệ điều hành đánh dấu hết thời lượng, cảnh báo mất điện.
- Báo hiệu ngắt giúp hệ thống phản hồi kịp thời mà không cần bộ xử lý liên tục kiểm tra thiết bị, và là cơ chế để hệ điều hành thực thi đa nhiệm.

Chu kỳ, với việc kiểm tra báo hiệu ngắt ở cuối mỗi lượt
Ngắt (interrupt) là:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Ngắt tạm thời dừng chu trình lấy-thực thi để CPU có thể phục vụ sự kiện cấp bách, sau đó tiếp tục.
Trong số các lựa chọn dưới đây, cái nào có thể gây ra một cuộc ngắt? Chọn tất cả những đáp án đúng.
Độ khó 2/5 · 140 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Sự kiện phần cứng, lỗi phần mềm và bộ đếm thời gian của OS đều sinh ra ngắt. Việc vòng lặp kết thúc là luồng chương trình thông thường được xử lý bằng lệnh nhảy, không phải là ngắt.
Xử lý báo hiệu ngắt
- Hoàn thành lệnh hiện tại. Lưu trạng thái: nội dung của PC và các register khác được đẩy lên ngăn xếp (stack).
- Tải địa chỉ của routine xử lý báo hiệu ngắt (ISR) vào PC và thực thi nó. ISR sẽ xử lý sự kiện.
- Khôi phục trạng thái đã lưu từ ngăn xếp và tiếp tục chương trình bị gián đoạn đúng vị trí ban đầu.

Lưu, xử lý, khôi phục, tiếp tục
Khi một cuộc ngắt xảy ra, CPU trước hết hoàn thành lệnh hiện tại, sau đó:
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Nó lưu PC và các thanh ghi, thực thi thủ tục xử lý ngắt, sau đó khôi phục trạng thái và tiếp tục từ nơi nó đã dừng lại.
Ví dụ minh họa: câu trả lời 4 điểm về báo hiệu ngắt
- Giải thích cách báo hiệu ngắt từ thiết bị nhập liệu được phát hiện và xử lý trong chu kỳ lấy-thực thi.
- Thiết bị gửi tín hiệu ngắt đặt cờ trong register báo hiệu ngắt. Bộ xử lý kiểm tra register này vào cuối mỗi chu kỳ, sau khi lệnh hiện tại đã thực thi xong.
- Nếu cờ được đặt và báo hiệu ngắt có mức ưu tiên cao hơn tác vụ hiện tại, PC và các register khác được lưu vào ngăn xếp. Địa chỉ của ISR được tải vào PC và routine được thực thi.
- Khi finish, các register được khôi phục từ ngăn xếp và chương trình bị gián đoạn tiếp tục đúng chỗ nó đã dừng. Bốn ý chính, theo thứ tự đó.
Bộ xử lý kiểm tra các ngắt vào cuối mỗi chu kỳ lấy-thực thi, sau khi chỉ lệnh hiện tại đã hoàn thành.
Độ khó 1/5 · 100 xu + một phần thưởng nhỏ cho lần hoàn thành đầu tiên trong ngày
Thời điểm này chính là yếu tố cho phép trạng thái được lưu trữ gọn gàng: không có chỉ lệnh nào bị bỏ dở chừng.
Điểm số dễ mất
- PC được tăng trong giai đoạn lấy lệnh, không phải sau khi thực thi. Đặt
PC ← [PC] + 1ở vị trí thứ hai, ngay sauMAR ← [PC]. - Báo hiệu ngắt được kiểm tra vào cuối chu kỳ, không bao giờ ở giữa một lệnh.
- Trạng thái được đẩy lên ngăn xếp và lấy ra từ đó. Câu "CPU dừng" hoặc "chương trình bị mất" là sai: nó tiếp tục đúng chính xác vị trí trước đó.
- Nhiều nhân hơn không làm gấp đôi tốc độ; phần mềm phải sử dụng chúng. Hãy nêu điều này khi so sánh thông số kỹ thuật.
Bạn đã nắm vững
- hiệu suất: tốc độ xung nhịp, số nhân, chiều rộng bus, bộ nhớ đệm (cùng với kích thước từ, RAM, bộ lưu trữ), mỗi yếu tố đều có hệ quả riêng
- cổng kết nối: USB đa năng và hot-swap, HDMI video và âm thanh kỹ thuật số, VGA video tương tự
- lấy dữ liệu:
MAR ← [PC],PC ← [PC] + 1,MDR ← [[MAR]],CIR ← [MDR]; sau đó giải mã, thực thi, lặp lại - một ngắt được kiểm tra vào cuối mỗi chu kỳ: lưu trạng thái vào ngăn xếp, chạy ISR, khôi phục, tiếp tục