1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Giáo trình cấu trúc máy tính (nghề tin học văn phòng trung cấp)

133 67 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Tiêu đề Giáo trình cấu trúc máy tính (nghề tin học văn phòng trung cấp)
Tác giả Nhóm tác giả
Trường học Trường Cao Đẳng Cơ Điện Xây Dựng Việt Xô
Chuyên ngành Cấu trúc máy tính
Thể loại Giáo trình
Năm xuất bản 2018
Thành phố Ninh Bình
Định dạng
Số trang 133
Dung lượng 1,81 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Cấu trúc

  • CHƯƠNG 1:TỔNG QUAN VỀ CẤU TRÚC MÁY TÍNH (10)
    • 2.1. Khái niệm thông tin và lượng thông tin (14)
    • 2.2. Sự mã hóa thông tin (16)
    • 3. Đặc điể m c ủa các thế h ệ máy tính điệ n t ử (24)
      • 3.1. Thế hệ thứ nhất: (1945-1955) (24)
      • 3.2. Thế hệ thứ hai: (1955-1965) (25)
      • 3.3. Thế hệ thứ ba: (1965-1980) (25)
      • 3.4. Th ế h ệ th ứ tư: (1980 - nay ) (25)
    • 4. Kiến trúc và tổ chức máy tính (26)
      • 4.1. Khái niệm kiến trúc máy tính (26)
      • 4.2. Khái niệ m t ổ ch ức máy tính (27)
    • 5. Các mô hình kiến trúc máy tính (27)
      • 5.1. Mô hình kiến trúc Von Neumann (28)
      • 5.2. Mô hình kiến trúc Havard (29)
  • CHƯƠNG 2: KIẾN TRÚC TẬP LỆNH CỦA MÁY TÍNH (31)
    • 1. Thành phần cơ bả n c ủ a m ột máy tính (31)
      • 1.1 Bộ xử lý trung tâm (CPU) (32)
      • 1.2 Bộ nhớ máy tính (33)
      • 1.3 H ệ th ống vào - ra (35)
      • 1.4 Liên kế t h ệ th ố ng (35)
    • 2. Kiến trúc các tập lệnh CISC và RISC (0)
      • 2.1. Kiến trúc tập lệnh CISC (37)
      • 2.2. Ki ến trúc tậ p l ệ nh RISC (37)
    • 3. Mã lệnh (40)
      • 3.1 Khái niệm lệnh máy, mã lệnh (40)
      • 3.2 T ậ p l ệ nh (41)
  • CHƯƠNG 3: BỘ XỬ LÝ (49)
    • 2. Đườ ng d ẫ n d ữ li ệ u (50)
      • 2.1. Các thành phần đường dẫn dữ liệu (50)
      • 2.2. Nhiệm vụ của đường dẫn dữ liệu (51)
    • 3. B ộ điề u khi ể n (52)
      • 3.1. Chức năng bộ điều khiển (52)
      • 3.2. Các phương pháp thiết kế bộ điều khiển (53)
    • 4. Ti ến trình thự c hi ệ n l ệnh máy (55)
      • 4.1. Đọ c l ệ nh (55)
      • 4.2. Giải mã lệnh (56)
      • 4.3. Nhận dữ liệu (56)
      • 4.4. Th ự c hi ệ n l ệ nh (57)
      • 4.5 Lưu trữ kết quả (57)
    • 5. Kỹ thuật ống dẫn lệnh (58)
    • 6. K ỹ thu ật siêu ố ng d ẫ n l ệ nh (60)
    • 7. Các chướng ngại của ống dẫn lệnh (61)
      • 7.1. Chướng ngại do cấu trúc (61)
      • 7.2. Chướ ng ng ạ i do d ữ li ệ u (61)
      • 7.3. Chướng ngại do điều khiển (62)
    • 8. Các loại ngắt (64)
      • 8.1. Ng ắ t (64)
      • 8.2. Các loạ i ng ắ t (64)
      • 8.3. Hoạt động của ngắt (65)
  • CHƯƠNG 4: BỘ NH Ớ (67)
    • 1.1. Phân loại bộ nhớ theo phương pháp truy nhập (67)
    • 1.2. Phân loại theo đọ c ghi c ủ a b ộ nh ớ (67)
    • 2. Các loại bộ nhớ bán dẫn (68)
      • 2.1. ROM (Read Only Memory) (68)
      • 2.2. RAM (Random Access Memory) (69)
    • 3. H ệ th ố ng nh ớ phân cấ p (72)
    • 4. Kết nối bộ nhớ với bộ xử lý (74)
      • 5.1. Cache (b ộ nh ớ đệ m nhanh) (75)
      • 5.2. Tổ chức cache (76)
      • 5.3. Các phương pháp ánh xạ địa chỉ (77)
  • CHƯƠNG 5: THIẾT BỊ NHỚ NGOÀI (82)
    • 1.1 Đĩa từ (đĩa cứng, đĩa mề m) (82)
    • 1.2 Băng từ (85)
    • 2.1. CD-ROM, CD-R/W (87)
    • 2.2. DVD-ROM, DVD-R/W (87)
    • 2.3. Bluray (88)
    • 4. An toàn dữ li ệu trong lưu trữ (89)
      • 4.1. RAID (Redundant Arrays of Inexpensive Disks) (89)
      • 4.2. Các loại RAID (90)
  • CHƯƠNG 6: BẢ NG M ẠCH CHÍNH (95)
  • CHƯƠNG 7: CÁC LOẠI BUS (100)
    • 1. Định nghĩa bus, bus hệ thống (100)
      • 1.1. Định nghĩa bus (100)
      • 1.2. Bus hệ thống(System bus) (101)
    • 2. Bus đồng bộ và không đồng bộ (101)
      • 2.1. Bus đồ ng b ộ (101)
      • 2.2. Bus không đồ ng b ộ (101)
    • 3. Hệ thống bus phân cấp (101)
      • 3.1. Bus nối bộ xử lý với bộ nhớ (102)
      • 3.2. Bus vào – ra (102)
    • 4. Các loại bus sử dụng trong các hệ thống vi xử lý (104)
  • CHƯƠNG 8: NGÔN NGỮ ASSEMBLY (106)
    • 1. Tổng quan (9)
      • 2.1. C ấu trúc chương trình hợ p ng ữ (107)
      • 2.2. Cú pháp lệnh hợp ngữ (109)
      • 2.3. Các kiể u d ữ li ệ u trong h ợ p ng ữ (111)
    • 3. Các lệnh điều khiển (114)
      • 3.1. Các lệnh cơ bản (114)
      • 3.2. Các lệ nh chuy ển điề u khi ể n (0)
    • 4. Ngăn xếp và các thủ t ụ c (127)
      • 4.1. Ngăn xếp (127)
      • 4.2. Các thủ tục (129)
  • TÀI LIỆU THAM KHẢO (133)

Nội dung

Giáo trình cung cấp cho sinh viên những kiến thức cơ bản về cấu trúc máy tính, về tổ chức và hoạt động bộ vi xử lý, các thành phần phần trong hệ thống máy tính và các biện pháp kĩ thuật

QUAN VỀ CẤU TRÚC MÁY TÍNH

Khái niệm thông tin và lượng thông tin

Thông tin là sự hiểu biết về một trạng thái đã cho trong tập hợp các trạng thái có thể xuất hiện tại một thời điểm Hình 1.7 trình bày thông tin về hai trạng thái có ý nghĩa của hiệu điện thế, làm rõ cách khái niệm thông tin gắn liền với việc nhận diện một trạng thái cụ thể giữa nhiều trạng thái khác nhau Khái niệm này cho thấy thông tin được xây dựng khi xác định và hiểu được trạng thái đã chọn ở một thời điểm cho trước, từ đó xác lập sự khác biệt và truyền tải thông tin trong hệ thống có hiệu điện thế.

Trong hình này, ta quy ước hai trạng thái có ý nghĩa dựa trên hiệu điện thế và ngưỡng VL: trạng thái thấp khi hiệu điện thế nhỏ hơn VL, và trạng thái cao khi hiệu điện thế lớn hơn VL Việc phân định hai trạng thái này giúp mô tả và điều khiển mạch một cách rõ ràng, đồng thời làm cơ sở cho các phân tích tín hiệu và các ứng dụng logic dựa trên ngưỡng điện áp VL.

Để có được thông tin từ tín hiệu, ta phải xác định thời điểm quan sát trạng thái của tín hiệu Ví dụ, tại thời điểm t1 tín hiệu ở trạng thái thấp và tại thời điểm t2 tín hiệu ở trạng thái cao.

Thông tin được đo lường bằng đơn vị thông tin mà ta gọi là bit Lượng thông tin được định nghĩa bởi công thức:

I = Log2(N) Trong đó: I: là lượng thông tin tính bằng bit

N: là số trạng thái có thể có

Một bit đại diện cho mức hiểu biết cần để xác định một trạng thái duy nhất trong hai trạng thái có thể Ví dụ, khi xét một tập 16 trạng thái, lượng thông tin cần để nhận diện đúng một trạng thái trong số đó bằng 4 bit (tương ứng với log2(16)).

Tám trạng thái được ghi nhận nhờ 4 số nhị phân (mỗi số nhị phân có thể có giá trị 0 hoặc 1)

Lượng thông tin là số lượng chữ số nhị phân cần thiết để biểu diễn tất cả các trạng thái có thể Do đó, một bit được coi là một chữ số nhị phân Một từ có n bit có thể biểu diễn một trạng thái trong tổng số 2^n trạng thái mà nó có thể đại diện.

Vậy một từ n bit tương ứng với một lượng thông tin n bit

Ví dụ : Tám trạng thái khác nhau ứng với 3 số nhị phân

Sự mã hóa thông tin

2.2.1 Mã và mã hóa là gì?

Mã hóa là phương pháp biến đổi thông tin từ các định dạng bình thường như phim ảnh, văn bản và hình ảnh thành một dạng thông tin được mã hóa mà người dùng bình thường không thể hiểu khi không có phương tiện giải mã Quá trình này biến đổi dữ liệu sang một hình thức an toàn, đòi hỏi khóa giải mã hoặc phương tiện giải mã phù hợp để khôi phục nội dung ban đầu Nhờ vậy, thông tin được bảo vệ khỏi truy cập trái phép và đảm bảo tính riêng tư, toàn vẹn và xác thực của dữ liệu trong quá trình lưu trữ và truyền tải.

Ví dụ một quy tắc mã hóa đơn giản:

Tất cả các ký tự đều bị thay thế bằng ký tự thứ 4 phía trước nó trong bảng chữ cái

Bảng chữ cái gồm: "ABCDEFGHIJKLMNOPQRSTUVXYZ "

Vậy với câu: KY THUAT MA HOA CO BAN

Sau khi mã hóa sẽ có được chuỗi: GYVPDQXPVIXVDKXVZKVYXJ

Rõ ràng chuỗi ký tự này sẽ không thể hiểu nội dung nếu thiếu khóa để giải mã Khóa đó chính là số 4 ký tự mà bạn dịch Việc nhận diện và giải mã chuỗi phụ thuộc vào đúng khóa giải mã, nhằm bảo đảm an toàn cho nội dung Khi có đúng khóa, nội dung được hé lộ và thông điệp trở nên rõ ràng.

Khi nhận được chuỗi này, bạn chỉ cần dịch ngược trở về bằng cách thay ký tự bằng ký tự thứ4 phía sau nó G => K, T => Y,

Trong ví dụ trên, tất cả các ký tự được mã hóa bằng cách thay thế bằng ký tự thứ 4 phía trước nó trong bảng chữ cái; đây là quá trình mã hóa Để giải mã, ta thay ký tự bằng ký tự thứ 4 phía sau nó, tức là quá trình giải mã.

2.2.2 Biểu diễn số trong máy tính

Khái niệm hệ thống số xác định phạm vi giá trị có thể xuất hiện trên từng chữ số dựa vào cơ sở hay hệ cơ số của hệ thống đó Ví dụ, hệ thập phân có 10 chữ số từ 0 đến 9; hệ nhị phân chỉ có hai giá trị 0 và 1 ở mỗi chữ số (bit) Dựa trên cơ sở b, một số được biểu diễn bằng một dãy chữ số từ 0 đến b−1 ở các vị trí khác nhau, và giá trị của chữ số ở vị trí i là a_i b^i; tổng các giá trị này cho ta giá trị của số khi đọc từ phải sang trái Dạng tổng quát để biểu diễn giá trị của một số là: Giá trị = a_k b^k + a_{k-1} b^{k-1} + + a_1 b + a_0, với mỗi a_i thuộc tập {0,1, , b−1} Qua hệ thống số, mọi số đều được biểu diễn bằng chuỗi chữ số theo cơ sở đã chọn, mang lại sự linh hoạt và khả năng mở rộng giữa các hệ đếm khác nhau.

V k : Số cần biểu diễn giá trị m: số thứ tự của chữ số phần lẻ

(phần lẻ của số có m chữ số được đánh số thứ tự từ -1 đến -m) n-1: số thứ tự của chữ số phần nguyên

(phần nguyên của số có n chữ số được đánh số thứ tự từ 0 đến n-1) b i : giá trị của chữ số thứ i k: hệ số (k: hệ thập phân; k=2: hệ nhị phân; )

Ví dụ: biểu diễn số 541.2510

Máy tính chủ yếu được cấu tạo từ các mạch điện tử có hai trạng thái, nên hệ nhị phân được dùng để biểu diễn trạng thái của mạch và để mã hóa ký tự, số liệu cần thiết cho vận hành của máy Việc biểu diễn bằng nhị phân giúp tối ưu hóa lưu trữ và xử lý dữ liệu, đồng thời tăng cường sự tương tác giữa các thành phần cứng và phần mềm.

* Để biến đổi một số hệ thập phân sang nhị phân, ta có hai phương thức biến đổi:

- Phương thức số dư để biến đổi phần nguyên của số thập phân sang nhị phân

Ví dụ: Đổi 23.37510 sang nhị phân Chúng ta sẽ chuyển đổi phần nguyên dùng phương thức số dư:

- Phương thức nhân để biến đổi phần lẻ của số thập phân sang nhị phân:

0.375 x 2 = 0.75 Phần nguyên = 0 0.75 x 2 = 1.5 Phần nguyên = 1 0.5 x 2 = 1.0 Phần nguyên = 1 Kết quả: (0.375)10 = (0.011)2

Kết quả cuối cùng nhận được là: 23.37510 = 10111.0112

Tuy nhiên, trong quá trình biến đổi phần thập phân của một số sang nhị phân theo phương pháp nhân, có những trường hợp khiến chuỗi nhị phân lặp vô hạn Hiện tượng này xảy ra vì phần thập phân không thể biểu diễn chính xác bằng một chuỗi nhị phân hữu hạn Ví dụ điển hình cho điều này là số 0.2, khi chuyển sang hệ nhị phân sẽ cho chuỗi 0.0011 0011 0011 … lặp lại.

Trong trường hợp biến đổi số nhị phân sang các hệ thống số khác nhau, ta có thể ghép một số bit nhị phân thành các khối tương ứng với cơ số của hệ đích để biểu diễn giá trị của số đó Phương pháp ghép khối giúp quá trình chuyển đổi dễ thực hiện và có thể tối ưu hóa cho nhiều hệ thống số Ví dụ, khi chuyển sang hệ thập lục phân (base 16) ta ghép 4 bit mỗi khối, sang hệ octal (base 8) ta ghép 3 bit mỗi khối; với các hệ thống số có cơ số 2^k, quy tắc ghép khối sẽ đảm bảo đại diện nhị phân được tối ưu và nhất quán.

Trong hệ nhị phân, người ta tách các bit thành nhóm để biểu diễn nhanh chóng các hệ đếm khác Thông thường, 4 bit được ghép lại thành một nibble (khối nibble) để biểu diễn một chữ số ở hệ thập lục phân (hexadecimal) Ngược lại, 3 bit được ghép thành một nhóm để biểu diễn một chữ số ở hệ bát phân (octal) Do đó, mỗi chữ số hex tương ứng với 4 bit, mỗi chữ số octal tương ứng với 3 bit, giúp quá trình chuyển đổi giữa nhị phân và các hệ đếm khác trở nên dễ dàng và nhanh chóng.

Hệ thập phân Hệ nhị phân Hệ bát phân Hệ thập lục phân

Như vậy, dựa vào cách biến đổi số được nêu trong bảng ở trên, ta có một ví dụ minh họa về quá trình biến đổi các chữ số giữa các hệ thống số khác nhau theo quy tắc của hệ nhị phân Ví dụ này cho thấy cách một số được biểu diễn bằng nhị phân và cách chuyển đổi giữa nhị phân và các hệ đếm phổ biến như thập phân, từ đó giúp hình dung rõ hơn về cơ chế biến đổi số trong các hệ thống số.

Một từ n bit có thể biểu diễn tất cả các số dương từ 0 tới 2 n -1 Nếu di là một số nhị phân thứ i, một từ n bit tương ứng với một số nguyên thập phân

Một Byte (gồm 8 bit) cóthể biểu diễn các số từ 0 tới 255 và một từ 32 bit cho phép biểu diễn các số từ 0 tới 4294967295

Có nhiều cách để biểu diễn một số n bit có dấu Trong tất cả mọi cách thì bit cao nhất luôn tượng trưng cho dấu.

Khi đó, bit dấu có giá trị là 0 thì số nguyên dương, bit dấu có giá trị là 1 thì số nguyên âm dn-1 dn-2 dn-3 d2 d1 d0

Số nguyên có bit dn-1 là bit dấu và có trị số tượng trưng bởi các bit từ d0tới dn-2 a) Cách biểu diễn bằng trị tuyệt đối và dấu

Trong cách tiếp cận này, bit dn-1 là bit dấu, còn các bit từ d0 đến dn-2 biểu diễn giá trị tuyệt đối của số đó Một từ nhị phân có độ dài n bit sẽ tương ứng với một số nguyên thập phân có dấu.

- Một Byte (8 bit) có thể biểu diễn các số có dấu từ -127 tới +127

- Có hai cách biểu diễn số không là 0000 0000 (+0) và 1000 0000 (-0) b) Cách biểu diễn bằng số bù 1 và số bù 2

Trong cách biểu diễn này, số âm -N được tạo ra bằng cách đổi mỗi bit nhị phân của số dương N sang giá trị bù của nó, tức là đổi 0 thành 1 và 1 thành 0 Đây được gọi là biểu diễn bù một (ones' complement) của N và cho phép biểu diễn cả dấu dương và dấu âm bằng cùng số bit Tuy nhiên, hệ thống này có nhược điểm là có hai đại diện cho số 0 ( +0 và -0 ), khiến các phép toán và xử lý so sánh trở nên phức tạp hơn.

- Một Byte cho phép biểu diễn tất cả các số có dấu từ -127 (1000 00002) đến 127 (0111 11112)

- Có hai cách biểu diễn cho 0 là 0000 0000 (+0) và 1111 1111 (-0)

+ Số bù 2: Để có số bù 2 của một số nào đó, người ta lấy số bù 1 rồi cộng thêm 1

Chỉ có một giá trị 0: +0 = 000000002, -0 = 000000002 c) Cách biểu diễn số nguyên bằng mã BCD (Binary Coder Decimal)

Dùng 4 bit để mã hóa cho các chữ số thập phân từ 0 đến 9

Có 6 tổ hợp không sử dụng (từ 10 đến 15) : 1010, 1011, 1100, 1101,

29  0010 1001 BCD Các kiểu lưu trữ số BCD

- BCD không gói (Unpacked BCD) : mỗi số BCD 4 bit được lưu trữ trong 4 bit thấp của mỗi byte Ví dụ: số 35 được lưu trữ như sau :

- BCD gói (Packed BCD): hai số BCD được lưu trữ trong 1 byte

Ví dụ : số 35 được lưu trữ như sau :

Cách biểu diễn số với dấu chấm động

- Tổng quát : một số thực X được biểu diễn theo kiểu số dấu chấm động như sau :

M là phần định trị (Mantissa)

Chuẩn IEEE 754 là một chuẩn quốc tế quy định cách biểu diễn và thao tác với số chấm động trong máy tính Có nhiều cách biểu diễn dấu chấm động, nhưng hai dạng biểu diễn theo chuẩn IEEE 754 được sử dụng phổ biến nhất là biểu diễn nhị phân và biểu diễn thập phân Chuẩn này xác định rõ các thành phần của một số chấm động gồm dấu, exponent (lũy thừa) và mantissa (số significand), đồng thời cung cấp các định dạng độ chính xác khác nhau như binary32 và binary64, cùng với các quy tắc làm tròn, các giá trị đặc biệt như NaN và số hữu hạn, và quy ước khi lưu trữ để đảm bảo tính nhất quán trên các hệ thống máy tính.

Trong biểu diễn dấu phẩy động 32 bit, S là bit dấu: S = 0 biểu thị số dương và S = 1 biểu thị số âm e (8 bit) là mã excess-127 của phần mũ E, với e = E + 127 và E = e - 127 Giá trị 127 được gọi là độ lệch (bias) nhằm căn chỉnh phạm vi của phần mũ m (23 bit) là phần lẻ của phần định trị M.

M = 1.m Công thức xác định giá trị của số thực :

Ví dụ 1: xác định giá trị của số thực được biểu diễn bằng 32 bit như sau :

Ví dụ 2: Biểu diễn số thực X = 83.75 về dạng dấu chấm động IEEE 754

Ta có: S = 0 vì đây là số dương e - 127 = 6  E = 127 + 6 = 133 10 = 1000 01012 Vậy X = 0 100 0010 1 010 0111 1000 0000 0000 0000

S E M Các qui ước đặc biệt:

- Các bit của e bằng 0, các bit của m bằng 0, thì X =  0

- Các bit của e bằng 1, các bit của m bằng 0, thì X =  

- Các bit của e bằng 1, còn m có ít nhất một bit bằng 1, thì nó không biểu diễn cho số nào cả (NaN - Not a number)

- Phạm vi biểu diễn: 2 -127 đến 2 +127 , 10 -38 đến 10 +38

- e (11 bit) là mã excess - 1023 của phần mũ E: E = e - 1023

- m (52 bit) là phần lẻ của phần định trị M

- Giá trị của số thực:

- Giải giá trị biểu diễn là: 10 -308 đến 10 +308

Đặc điể m c ủa các thế h ệ máy tính điệ n t ử

Mục tiêu: - nắm được các đặc trưng của các thế hệ máy tính

- qua mỗi thế hệ thấy được sự phát triển của máy tính điện tử

Máy tính thời kỳ đầu được xây dựng trên cơ sở đèn điện tử (đèn chân không), mỗi đèn tượng trưng cho 1 bit nhị phân, khiến hệ thống có khối lượng rất lớn, tốc độ chậm và tiêu thụ điện năng cao Ví dụ điển hình là máy ENIAC, gồm 18000 đèn điện tử và 1500 rơ-le, cho thấy quy mô và sự phức tạp của công nghệ máy tính khi đó với trọng lượng và mức tiêu thụ năng lượng đáng kể.

Máy nặng 30 tấn và tiêu thụ công suất 140 kW, được thiết kế với kiến trúc gồm 20 thanh ghi, mỗi thanh ghi chứa một số thập phân có 10 chữ số Việc lập trình máy dựa trên việc đặt vị trí của 6.000 chuyển mạch (switch); mỗi switch có nhiều vị trí và được nối tới vô số ổ cắm (socket), tạo thành một “rừng” đầu cắm jumper để cấu hình hệ thống.

Vào thời kỳ ấy, Giáo sư Toán học John Von Neumann đề xuất ý tưởng thiết kế máy tính IAS (Princeton Institute for Advanced Studies) dựa trên khái niệm lưu trữ chương trình trong bộ nhớ Theo đó, chương trình được lưu trữ và bộ điều khiển sẽ lần lượt lấy lệnh, biến đổi dữ liệu trong bộ nhớ, trong khi bộ số học và logic (ALU) được điều khiển để thực hiện các phép toán trên dữ liệu nhị phân và đồng thời kiểm soát hoạt động của các thiết bị vào ra Đây được xem là nền tảng cho máy tính hiện đại ngày nay, và chiếc máy tính này còn được gọi là máy tính Von Neumann.

Máy tính được xây dựng trên cơ sở các đèn bán dẫn (transistor) Bell Labs đã phát minh ra transistor vào năm 1948, và nhờ sự xuất hiện của transistor, thế hệ máy tính thứ hai bắt đầu thay thế các đèn điện tử bằng transistor lưỡng cực Máy tính đầu tiên của thế hệ này mang tên TX-0 (Transistorized Experimental Computer 0).

Mạch tích hợp (IC) cho phép đóng gói hàng chục transistor trong một vỏ chip, nhờ đó máy tính nhỏ gọn, nhanh hơn và rẻ hơn so với các máy tính dùng transistor ở thế hệ trước Điển hình cho xu hướng này là hệ thống IBM System/360, một thế hệ máy tính có những đột phá công nghệ mở rộng phạm vi ứng dụng và tăng hiệu suất Những tiến bộ của System/360 đánh dấu một bước ngoặt trong lịch sử máy tính, dựa trên nguyên lý tích hợp mạch để đạt hiệu quả cao với chi phí hợp lý.

- Tính tương thích cao: Các máy tính trong cùng một họ có khả năng chạy các chương trình, phần mềm của nhau

Đặc tính đa chương trình cho phép nhiều chương trình đồng thời nằm trong bộ nhớ tại một thời điểm; một chương trình được cấp cho thực thi trong khi các chương trình khác đang chờ hoàn tất các thao tác vào/ra (I/O) Nhờ cơ chế này, CPU không bị bỏ rơi khi phải chờ I/O và hệ thống có thể tận dụng thời gian chờ để chuyển sang chương trình khác, từ đó tăng hiệu suất và tối ưu hóa sử dụng tài nguyên.

- Không gian địa chỉ rất lớn (2 24 byte = 16Mb)

Máy tính ngày nay được xây dựng trên các vi mạch cỡ lớn (LSI) và cực lớn (VLSI), đánh dấu thế hệ máy tính số nhờ sự tiến bộ vượt bậc của công nghệ bán dẫn cho phép chế tạo các mạch tích hợp ở quy mô cực lớn Nhờ công nghệ LSI và VLSI, máy tính ngày càng nhỏ gọn và nhẹ hơn, có hiệu suất xử lý cao hơn và giá thành rẻ hơn, mở đường cho sự xuất hiện và phát triển của máy tính cá nhân trong kỷ nguyên số.

Phân loại máy tính số thế hệ thứ tư dựa trên kích thước vật lý, hiệu suất và lĩnh vực sử dụng cho thấy hiện nay có 5 loại chính, và các loại này có thể chồng lên nhau một phần ở từng trường hợp Mỗi loại đáp ứng một nhu cầu riêng từ tính di động và hiệu năng cao đến ứng dụng nhúng và phân tích dữ liệu phức tạp, phản ánh sự tiến bộ nhanh chóng của công nghệ xử lý và hệ thống máy tính.

Máy tính cá nhân, hay còn gọi là PC hoặc microcomputer, là loại máy tính có kích thước nhỏ, tích hợp một vi xử lý và các thiết bị ngoại vi Thông thường dành cho một người dùng và có thể hoạt động độc lập hoặc được kết nối trong mạng máy tính.

Minicomputer là loại máy tính ở kích thước trung bình, lớn hơn PC thông thường nhưng nhỏ hơn máy tính cỡ lớn Với hiệu suất xử lý đáng tin cậy và khả năng làm việc đa người dùng, minicomputer có thể thực hiện các ứng dụng vốn thường dành cho hệ thống máy tính cỡ lớn (mainframe), đáp ứng nhu cầu doanh nghiệp về lưu trữ, tính toán và quản lý dữ liệu Nhờ tính mở rộng và ổn định, loại máy này thích hợp cho các hệ thống doanh nghiệp cần xử lý đồng thời nhiều tác vụ và hỗ trợ các ứng dụng trọng yếu.

Minicomputer có khả năng hỗ trợ từ hàng chục đến hàng trăm người làm việc cùng lúc, đáp ứng nhu cầu xử lý dữ liệu và điều khiển trong các hệ thống phức tạp Minicomputer được sử dụng rộng rãi trong các ứng dụng thời gian thực, ví dụ như điều khiển hàng không và tự động hóa sản xuất.

Supermini là các máy tính Minicomputer có tốc độ xử lý nhanh nhất trong họ Mini tại một thời điểm nhất định Chúng thường được dùng trong các hệ thống phân chia thời gian, điển hình là các máy chủ mạng, nơi đáp ứng nhanh và hiệu suất xử lý cao là yếu tố quan trọng.

Mainframe là loại máy tính cỡ lớn có khả năng hỗ trợ đồng thời từ hàng trăm đến hàng ngàn người dùng Thường được sử dụng để thực hiện các tác vụ ở chế độ sắp xếp theo lô lớn (Large-Batch-Job) hoặc xử lý các giao dịch (Transaction Processing), điển hình như trong ngân hàng.

Siêu máy tính là những hệ thống được thiết kế đặc biệt để đạt tốc độ thực hiện các phép tính dấu phẩy động cao nhất có thể Chúng thường có kiến trúc song song, cho phép xử lý đồng thời hàng triệu, thậm chí hàng tỷ thao tác, từ đó tăng đáng kể hiệu suất tính toán cho các bài toán phức tạp Tuy nhiên, hiệu quả của siêu máy tính thường chỉ được thể hiện trong một số lĩnh vực nhất định như mô phỏng thời tiết, vật lý lượng tử và phân tích dữ liệu quy mô lớn.

Kiến trúc và tổ chức máy tính

Mục tiêu:nắm được các khái niệm kiến trúc máy tính và tổ chức máy tính, phân biệt được hai khái niệm đó

4.1 Khái niệm kiến trúc máy tính

Kiến trúc máy tính là khoa học và nghệ thuật lựa chọn, kết nối các thành phần phần cứng để tạo ra các máy tính đáp ứng ba yếu tố cốt lõi: chức năng, hiệu năng và giá thành Yêu cầu chức năng đòi hỏi máy tính có nhiều tính năng phong phú và hữu ích; yêu cầu hiệu năng đòi hỏi tốc độ xử lý cao; và yêu cầu giá thành ngày càng rẻ hơn Việc cân bằng cả ba yếu tố này là thách thức đáng kể, nhưng nhờ sự phát triển mạnh mẽ của công nghệ vi xử lý, máy tính ngày nay có tính năng phong phú, hiệu suất cao và chi phí hợp lý so với các thế hệ trước.

Kiến trúc máy tính được cấu thành từ 3 thành phần con: (1)

Kiến trúc tập lệnh (Instruction SetArchitecture), (2)

Vi kiến trúc(Micro Architecture) vàThiết kế hệ thống (System Design)

Kiến trúc tập lệnh là hình ảnh của một hệ thống máy tính ở mức ngôn ngữ máy, thể hiện cách thức các lệnh được thiết kế và cách chúng điều khiển quá trình xử lý Các thành phần của kiến trúc tập lệnh gồm tập lệnh (opcode), các chế độ địa chỉ, các thanh ghi, khuôn dạng địa chỉ và dữ liệu, và mỗi yếu tố đều đóng vai trò quan trọng trong việc nhận diện, giải mã và thực thi các lệnh trên hệ thống.

Kiến trúc vi mô là mô tả ở mức thấp các thành phần của hệ thống máy tính, cách chúng phối hợp và trao đổi thông tin với nhau Kiến trúc vi mô giúp làm rõ cách tối ưu hóa hiệu suất và quản lý nguồn lực của hệ thống, từ đó trả lời hai câu hỏi cơ bản về thiết kế và vận hành bộ xử lý và các thành phần liên quan.

Máy tính gồm các thành phần phần cứng như CPU, RAM, ổ cứng/SSD, bo mạch chủ, nguồn cấp và các thiết bị vào/ra, kết nối với nhau qua bo mạch chủ và các bus dữ liệu (PCIe, SATA, USB, v.v.), do đó tín hiệu và dữ liệu được trao đổi giữa CPU và bộ nhớ, giữa ổ cứng và RAM, và giữa các bộ điều khiển I/O Bo mạch chủ, chipset và hệ thống bus đóng vai trò trung gian điều phối đường đi dữ liệu và cấp nguồn cho các thiết bị, đảm bảo các thành phần nhận lệnh và phản hồi đúng lúc Khi thực thi tập lệnh, CPU thực hiện chu trình fetch-decode-execute, lấy lệnh và dữ liệu từ RAM qua các kênh dữ liệu và bộ nhớ đệm, đồng thời hệ điều hành và các trình điều khiển I/O quản lý ngắt và phân bổ tài nguyên để các thiết bị vào/ra thực thi theo lệnh người dùng Toàn bộ quá trình này cho phép khởi động, xử lý thông tin và thực thi tập lệnh một cách hiệu quả.

Thiết kế hệ thống máy tính là quá trình xác định và tích hợp toàn bộ các thành phần phần cứng của hệ thống Quá trình này bao gồm hệ thống phối ghép (các bus và các chuyển mạch) nhằm tối ưu hoá truyền thông dữ liệu, hệ thống bộ nhớ để đáp ứng nhu cầu lưu trữ và truy cập dữ liệu, và các cơ chế giảm tải cho CPU như DMA (truy cập trực tiếp bộ nhớ) để tăng hiệu suất Ngoài ra, thiết kế hệ thống còn giải quyết các vấn đề liên quan đến đa xử lý và xử lý song song để nâng cao khả năng xử lý đồng thời và mở rộng hệ thống Tóm lại, thiết kế hệ thống máy tính kết nối chặt chẽ giữa phần cứng và các cơ chế tối ưu hoá nhằm đảm bảo hiệu năng và khả năng mở rộng trong thực tế.

4.2 Khái niệm tổ chức máy tính

Tổ chức máy tính, hay còn gọi là cấu trúc máy tính, là lĩnh vực nghiên cứu các bộ phận của máy tính và cách chúng hoạt động cũng như phối hợp với nhau Với quan điểm này, tổ chức máy tính gắn liền với vi kiến trúc — một thành phần của kiến trúc máy tính Do đó, kiến trúc máy tính là khái niệm rộng hơn, bao hàm cả tổ chức hay cấu trúc máy tính.

Các mô hình kiến trúc máy tính

Mục tiêu:Hiểu được các mô hình kiến trúc Von Neuman và Havard

5.1 Mô hình kiến trúc Von Neumann

Kiến trúcmáy tính von-Neumann đượcnhà toán học John von-Neumann đưa ra vào năm1945 trong một báo cáo vềmáy tính EDVAC như minh hoạ trên

Hình 1.8: Kiến trúc máy tínhvon- Neumann nguyên thuỷ.

Các máy tính hiện đại ngày nay sử dụng kiến trúc von-Neumann được cải tiến, hay còn gọi là kiến trúc von-Neumann hiện đại, như hình minh họa ở phía bên dưới.

Kiến trúcmáy tính von-Neumann hiện đại

Các đặc điểm của kiến trúc von-Neumann

Kiến trúc von- Neumann dựa trên 3 khái niệm cơ sở:

Trong kiến trúc máy tính, lệnh và dữ liệu được lưu trữ trong bộ nhớ đọc-ghi chia sẻ, tức một bộ nhớ duy nhất được dùng để chứa cả lệnh lẫn dữ liệu, đây là đặc trưng của mô hình lưu trữ chung giữa chương trình và dữ liệu.

(2) Bộ nhớ được đánh địa chỉ theo vùng, không phụ thuộc vào nội dung nó lưu trữ

(3) Các lệnh của một chương trình được thực hiện tuần tự

Quá trìnhthực hiện lệnh được chia thành3 giai đoạn (stages) chính:

(1) CPU đọc (fetch) lệnh từ bộ nhớ ,

(2) CPU giải mã và thực hiện lệnh;nếu lệnh yêu cầu dữ liệu, CPU đọc dữ liệu từ bộ nhớ

(3) CPU ghi kết quả thực hiện lệnh vào bộ nhớ (nếu có)

5.2 Mô hình kiến trúc Havard

Kiến trúc máy tính Harvard là một kiến trúc tiên tiến như minh hoạ trên hình

Hình 1.9: Kiến trúc máy tính Harvard

Kiến trúc Harvard phân chia bộ nhớ trong máy tính thành hai phần riêng biệt: bộ nhớ lưu chương trình (Program Memory) và bộ nhớ lưu dữ liệu (Data Memory) Hai hệ thống bus riêng được dùng để kết nối CPU với từng bộ nhớ tương ứng, mỗi hệ thống bus bao gồm đầy đủ ba thành phần để truyền tín hiệu địa chỉ, dữ liệu và điều khiển.

Máy tính dựa trên kiến trúc Harvard có khả năng đạt tốc độ xử lý cao hơn máy tính dựa trên kiến trúc von-Neumann nhờ hai hệ thống bus độc lập có băng thông lớn hơn Nhờ hai hệ thống bus tách biệt, hệ thống nhớ của kiến trúc Harvard cho phép thực hiện nhiều lệnh truy cập bộ nhớ đồng thời, giúp giảm xung đột truy cập bộ nhớ đặc biệt khi CPU áp dụng kỹ thuật đường ống (pipeline).

CÂU HỎI VÀ BÀI TẬ P

1 Dựa vào tiêu chuẩn nào người ta phân chia máy tính thành các thế hệ?

2 Đặc trưng cơ bản của các máy tính thế hệ thứ nhất?

3 Đặc trưng cơ bản của các máy tính thế hệ thứ hai?

4 Đặc trưng cơ bản của các máy tính thế hệ thứ ba?

5 Đặc trưng cơ bản của các máy tính thế hệ thứ tư?

6 Khuynh hướng phát triển của máy tính điện tử ngày nay là gì?

7 Việc phân loại máy tính dựa vào tiêu chuẩn nào?

8 Khái niệm thông tin trong máy tínhđược hiểu như thế nào?

9 Lượng thông tin là gì ?

10 Sự hiểu biết về một trạng thái trong 4096 trạng thái có thể có ứng với lượng thông tin là bao nhiêu?

12 Số nhịphân 8 bit (11001100)2, sốnày tương ứng với sốnguyên thập phân có dấu là bao nhiêu nếu số đang được biểu diễn trong cách biểu diễn: b Số bù 1 c Sốbù 2

13 Đổi các số sau đây: a (011011)2 ra số thập phân b (55.875)10 ra số nhịphân

14 Biểu diễn số thực (31.75)10 dưới dạng số có dấu chấm động chính xác đơn 32 bit.

KIẾN TRÚC TẬP LỆNH CỦA MÁY TÍNH

Thành phần cơ bả n c ủ a m ột máy tính

Mục tiêu:Hiểuđược các thành phần cơ bản của một máy vi tính

Thành phần cơ bản của một bộ máy tính gồm CPU (Central Processing Unit), bộ nhớ và các bộ phận nhập-xuất thông tin, được kết nối với nhau qua hệ thống bus Hệ thống bus gồm bus địa chỉ, bus dữ liệu và bus điều khiển; bus địa chỉ và bus dữ liệu đảm nhận việc chuyển dữ liệu giữa các bộ phận, trong khi bus điều khiển đồng bộ hóa quá trình trao đổi thông tin Thông thường người ta phân biệt hai loại bus chính: một bus hệ thống dùng để trao đổi dữ liệu giữa CPU và bộ nhớ (thông qua cache) và một bus vào-ra dùng để trao đổi dữ liệu giữa các thiết bị vào-ra và bộ nhớ trong.

Hình 2.1: Cấu trúc của một hệ máy tính đơn giản

Một chương trình khi được chạy sẽ được sao chép từ đĩa cứng vào bộ nhớ RAM cùng với các thông tin cần thiết để nó có thể hoạt động Quá trình nạp này do hệ điều hành quản lý, bao gồm nạp mã chương trình, dữ liệu khởi tạo và các thư viện liên kết động vào không gian địa chỉ của tiến trình Các thành phần nạp vào bộ nhớ gồm mã máy của chương trình, dữ liệu ban đầu, biến môi trường, tham số dòng lệnh và các bảng tham chiếu cần thiết cho liên kết Hệ điều hành cũng thiết lập vùng nhớ cho ngăn xếp (stack) và heap, khởi tạo cấu trúc tiến trình và môi trường thực thi, để sẵn sàng cho việc thực thi chương trình Sau cùng, chương trình được lên lịch và bắt đầu chạy trên CPU.

Bộ nhớ Hệ thống vào ra

Bus địa chỉ Bus dữ liệu Đơn vị điều khiển Đơn vị số học và (CU) logic (ALU) Tập thanh ghi

Bộ xử lý trung tâm (CPU) giao tiếp với bộ nhớ trong thông qua các bộ phận cung cấp thông tin như bàn phím hay đĩa từ CPU đọc lệnh và dữ liệu từ bộ nhớ, thực thi các lệnh đã được nạp và lưu kết quả trở lại bộ nhớ trong hoặc xuất kết quả ra các thiết bị xuất thông tin như màn hình hoặc máy in.

Thành phần cơ bản của một máy tính bao gồm :

1.1 Bộ xửlý trung tâm (CPU)

- Điều khiển hoạt động của máy tính

- Xử lý dữ liệu + Nguyên tắc hoạt động cơ bản: CPU hoạt động theo chương trình nằm trong bộ nhớ chính.

Cấu trúc cơ bản của CPU:

Hình 2.2: Cấu trúc cơ bản của CPU

Các thành phần cơ bản của CPU

- Đơn vị điều khiển (Control Unit – CU): điều khiển hoạt động của máy tính theo chương trình đã định sẵn

Đơn vị số học và logic (Arithmetic and Logic Unit – ALU) thực hiện các phép toán số học và các phép toán logic trên dữ liệu được xử lý Đơn vị điều khiển (Control Unit – CU) điều phối toàn bộ hoạt động của CPU, phát tín hiệu điều khiển cho ALU và các thành phần khác, quản lý chu trình fetch–decode–execute và điều chỉnh luồng dữ liệu giữa bộ nhớ, thanh ghi và ALU để đảm bảo lệnh được thực thi đúng trình tự.

Tập thanh ghi (RF) Đơn vị ghép nối bus (BIU)

- Tập thanh ghi (Register File - RF): lưu giữ các thông tin tạm thời phục vụ cho hoạt động của CPU

- Đơn vị nối ghép bus (Bus interface Unit - BIU): kết nối và trao đổi thông tin giữa bus bên trong (internal bus) và bus bên ngoài (external bus)

- + Chức năng: lưu trữ chương trình và dữ liệu

- + Các thao tác cơ bản với bộ nhớ:

- Bộ nhớ trong (Internal Memory)

- Bộ nhớ ngoài (External Memory)

Hình 2.3: Bộ nhớ máy tính

 Bộ nhớ trong (Internal memory)

- Chức năng và đặc điểm:

+ Chứa các thông tin mà CPU có thể trao đổi trực tiếp

+ Sử dụng bộ nhớ bán dẫn: ROM, RAM.

- Các loại bộ nhớ trong: Bộ nhớ chính, Bộ nhớ cache (bộ nhớ đệm nhanh)

 Bộ nhớ chính (Main memory)

- Chứa các chương trình và dữ liệu đang được CPU sử dụng.

- Tổ chức thành các ngăn nhớ được đánh địa chỉ.

- Ngăn nhớ thường được tổ chức theo byte

- Nội dung của ngăn nhớ có thể thay đổi, song địa chỉ vật lý của ngăn nhớ luôn cố định.

 Bộ nhớ đệm nhanh (Cache memory)

- Bộ nhớ có tốc độ nhanh được đặt đệm giữa CPU và bộ nhớ chính nhằm tăng tốc độ CPU truy nhập bộ nhớ

- Dung lượng nhỏ hơn bộ nhớ chính

- Cache thường được chia thành một số mức

- Cache có thể được tích hợp trên chip vi xử lý

- Cache có thể có hoặc không

Hình 2.4: Bộ nhớ đệm Cache

 Bộ nhớ ngoài (External memory)

- Chức năng và đặc điểm:

+ Lưu giữ tài nguyên phần mềm của máy tính

+ Được kết nối với hệ thống dưới dạng các thiết bị vào-ra

+ Bộ nhớ từ: đĩa cứng, đĩa mềm.

+ Bộ nhớ quang: đĩa CD, DVD

+ Bộ nhớ bán dẫn: Flash disk, memory card

- Chức năng: Trao đổi thông tin giữa máy tính với thế giới bên ngoài

- Các thao tác cơ bản: + Vào dữ liệu (Input)

+ Các thiết bị ngoại vi (Peripheral Devices): chuyển đổi dữ liệu giữa bên trong và bên ngoài máy tính

Thiết bị vào: bàn phím, chuột, máy quét

Thiết bị ra: màn hình, máy in

+ Các mô-đun vào ra (IO Modules): nối ghép các thiết bị ngoại vi với máy tính

Trong hệ thống máy tính, luồng thông tin di chuyển giữa các thành phần chính như CPU, bộ nhớ (RAM) và các mô-đun vào ra (I/O) Các thành phần này cần được kết nối với nhau thông qua bus hệ thống và các giao diện điều khiển để truyền dữ liệu, đồng bộ hóa tín hiệu và đảm bảo hiệu suất hoạt động của toàn bộ hệ thống.

Hình 2.5 Kết nối mô đun nhớ

Hình 2.6 Kết nối mô đun vào ra

Bus là đường truyền tín hiệu điện chung nối các thiết bị khác nhau trong hệ thống máy tính, nhằm kết nối và vận chuyển thông tin giữa các thành phần Thông thường bus gồm khoảng 50 đến 100 dây dẫn được gắn trên mainboard; trên các dây có các đường tín hiệu ra/vào và các đầu nối được sắp xếp đúng cách với khoảng cách chuẩn để có thể cắm vào các bảng mạch điều khiển, bộ nhớ và thiết bị I/O Chúng ta sẽ tìm hiểu chi tiết hệ thống bus ở chương 6 của giáo trình.

2 Ki ến trúc các tậ p l ệnh CISC và RISC

Mục tiêu: Hiểu được kiến trúc tập lệnh Cisc và Risc.

Kiến trúc các tập lệnh CISC và RISC

Kiến trúc CISC (Complex Instruction Set Computer) ra đời từ những năm 1960 Lúc ấy, người ta nhận thấy trình biên dịch gặp khó khăn khi tận dụng tối đa các thanh ghi, trong khi các vi lệnh (micro-operations) thực thi nhanh hơn và cần giảm độ dài của chương trình Do đó, thiết kế CISC ưu tiên các kiểu định vị ô nhớ – ô nhớ và ô nhớ – thanh ghi, với các lệnh phức tạp và nhiều kiểu định vị Kết quả là lệnh có độ dài biến đổi và bộ điều khiển vi chương trình (microprogrammed control unit) trở nên hiệu quả nhất để quản lý chúng.

Bảng 2.1 trình bày đặc tính của một số máy CISC tiêu biểu Ta nhận thấy cả ba máy được đề cập đều có điểm chung là có nhiều lệnh với độ dài biến đổi Đồng thời, có nhiều cách thực hiện lệnh và nhiều vi chương trình được sử dụng để triển khai.

Những tiến bộ gần đây trong lĩnh vực mạch tích hợp (IC) và kỹ thuật dịch chương trình đang khiến các nhận định trước đây phải được xem xét lại, đặc biệt khi có khảo sát định lượng về việc sử dụng tập lệnh của các máy CISC, từ đó mở ra những góc nhìn mới về hiệu suất, độ tối ưu và ứng dụng trong thiết kế hệ thống.

Bộ nhớ vi chương trình

Chiều dài lệnh (tính bằng bit)

Cách thực hiện lệnh ượn

Bảng 2.1: Đặc tính của một vài máy CISC

2.2 Kiến trúc tập lệnh RISC

Ví dụ, các trình biên dịch đã cho thấy việc sử dụng thanh ghi mang lại hiệu quả và không có sự khác biệt đáng kể khi truy cập dữ liệu từ ô nhớ cho vi chương trình hay cho chương trình Điều này góp phần hình thành khái niệm về một máy tính với tập lệnh rút gọn RISC vào đầu những năm 1980 Các máy RISC dựa chủ yếu trên một tập lệnh cho phép thực hiện kỹ thuật ống dẫn (pipelining) một cách tối ưu nhất bằng cách thiết kế các lệnh có chiều dài cố định, dạng đơn giản, dễ giải mã Máy RISC dùng kiểu thực thi lệnh thanh ghi - thanh ghi (register-to-register).

Chỉ có các lệnh ghi hoặc đọc ô nhớ mới cho phép thâm nhập vào ô nhớ

Bảng 2.2 diễn tả ba mẫu máy RISC đầu tiên: mẫu máy của IBM (IBM

Ba hệ thống điển hình cho xu hướng RISC thời kỳ đầu là IBM 801, Berkeley RISC I (Patterson) và Stanford MIPS (Hennessy) Ta nhận thấy cả ba máy đều có bộ điều khiển bằng mạch điện (không có bộ nhớ vi chương trình), có chiều dài lệnh cố định 32 bit, chỉ có một kiểu thi hành lệnh (kiểu thanh ghi - thanh ghi) và tập lệnh giới hạn ở một số ít.

Bộ xử lý IBM 801 RISC1 MIPS

Dung lượng bộ nhớ vi chương trình Độ dài lệnh tính bằn ỹ thuậ ế ạ

Bảng 2.2 : Đặc tính của ba mẫu đầu tiên máy RISC

Tóm lại, ta có thể định nghĩa mạch xử lý RISC bởi các tính chất sau:

- Có một sốít lệnh (thông thường dưới 100 lệnh )

- Có một số ít các kiểu định vị (thông thường hai kiểu: định vị tức thì và định vị gián tiếp thông qua một thanh ghi)

- Có một số ít dạng lệnh (một hoặc hai)

- Các lệnh đều cócùng chiều dài.

- Chỉ có các lệnh ghi hoặc đọc ô nhớ mới thâm nhập vào bộ nhớ

- Dùng bộ tạo tín hiệu điều khiển bằng mạch điện để tránh chu kỳ giải mã các vi lệnh làm cho thời gian thực hiện lệnh kéo dài

- Bộ xử lý RISC có nhiều thanh ghi để giảm bớt việc thâm nhập vào bộ nhớ trong

Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu kỳ máy

Bộ xử lý RISC cócác lợi điểm sau :

Diện tích dành cho bộ điều khiển trong bộ xử lý giảm từ 60% ở các bộ xử lý CISC xuống còn 10% ở các bộ xử lý RISC, mở ra không gian tích hợp bên trong bộ xử lý cho các thanh ghi, cổng vào ra và bộ nhớ đệm (cache) Nhờ vậy, vi xử lý có thể hoạt động hiệu quả hơn và được thiết kế gọn gàng hơn, giúp tối ưu hóa hiệu suất và kích thước tổng thể.

Đạt tốc độ tính toán cao nhờ giải mã lệnh đơn giản, sử dụng nhiều thanh ghi giúp giảm thiểu truy cập bộ nhớ và tối ưu hóa xử lý dữ liệu Kỹ thuật ống dẫn liên tục (pipelining) được triển khai hiệu quả, cho phép các lệnh thực thi theo chu trình liên tục với thời gian thực thi đồng nhất và cùng dạng lệnh Nhờ cấu trúc này, hệ thống tăng hiệu suất xử lý, tiết kiệm tài nguyên và đáp ứng tốt các bài toán tính toán phức tạp một cách ổn định.

- Thời gian cần thiết để thiết kế bộ điều khiển là ít Điều này góp phần làm giảm chi phí thiết kế

- Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà ta gặp thường trong bộ điều khiển

Trước những điều lợi không chối cãi được, kiến trúc RISC có một số bất lợi:

 Các chương trình dài ra so với chương trình viết cho bộ xử lý CISC Điều này do các nguyên nhân sau :

Quy tắc bảo mật bộ nhớ cho hệ thống cho phép chỉ các lệnh đọc và ghi vào bộ nhớ mới được thực hiện, mọi lệnh khác đều bị cấm thâm nhập Vì vậy để hoàn thành một công việc nhất định, chương trình buộc phải dùng nhiều lệnh liên tiếp để thao tác với bộ nhớ và đạt được kết quả mong muốn.

Trong thiết kế hệ thống, việc tính toán địa chỉ hiệu dụng là cần thiết vì có ít cách định vị nên phạm vi định vị địa chỉ bị hạn chế Do tập lệnh có số lượng lệnh hạn chế, những lệnh không có sẵn sẽ được thay thế bằng một chuỗi lệnh của bộ xử lý RISC để bảo đảm tính linh hoạt và tối ưu hóa quá trình biên dịch và thực thi.

Các trình biên dịch gặp nhiều thách thức do thiếu lệnh và giới hạn lựa chọn, khiến quá trình diễn dịch các cấu trúc của chương trình nguồn gặp khó khăn Bên cạnh đó, sự cứng nhắc của kỹ thuật ống dẫn (pipeline) cũng gây trở ngại cho tối ưu hóa và việc chuyển đổi mã nguồn thành mã máy.

 Có ít lệnh trợ giúp cho ngôn ngữ cấp cao

Các bộ xử lý CISC nhờ tập lệnh phức tạp có thể hỗ trợ hiệu quả hơn cho các ngôn ngữ cấp cao, tối ưu hóa quá trình thực thi mã nguồn Ví dụ điển hình, hãng Honeywell đã chế tạo một máy tính có một lệnh cho mỗi động từ của COBOL, minh họa cách một tập lệnh chi tiết có thể đại diện trực tiếp cho các thao tác ngôn ngữ cấp cao và làm nổi bật mối liên hệ giữa kiến trúc máy và ngôn ngữ lập trình.

Các tiến bộ gần đây cho phép xếp đặt trong một vi mạch, một bộ xử lý RISC nền và nhiều toán tử chuyên dùng

Thí dụ, bộ xử lý 860 của Intel bao gồm một bộ xử lý RISC, bộ làm tính với các số lẻ và một bộ tạo tín hiệu đồ hoạ.

Mã lệnh

Mục tiêu:nắm được lệnh máy,hiểu được mã lệnh

3.1 Khái niệm lệnh máy, mã lệnh

Một lệnh mô tả bằng mã nhị phân có thể dài từ 1 đến 6 byte Cấu trúc chung của một lệnh bao gồm:

Mãlệnh nhằm xác định tương ứng với lệnh là hoạt động hay thao tác nào cần được thực hiện

Các toán hạng là đối tượng được xử lý bởi lệnh

Trong lệnh MOV AX, BX, MOV đóng vai trò là opcode thể hiện lệnh chuyển dữ liệu AX và BX là các toán hạng của lệnh, trong đó BX là nguồn dữ liệu còn AX là đích nhận dữ liệu Lệnh MOV sao chép giá trị từ thanh ghi nguồn BX sang thanh ghi đích AX, giúp di chuyển dữ liệu giữa các thanh ghi một cách nhanh chóng và hiệu quả.

Tùy theo từng lệnh mà độ dài của nó có sự khác nhau.

Mỗi bộ xử lý máy tính vận hành dựa trên một tập lệnh xác định, cho phép nó thực hiện các thao tác cụ thể thông qua các lệnh nhị phân mà hệ thống hiểu và thi hành Tập lệnh này thường chứa từ vài chục đến hàng trăm lệnh khác nhau, mỗi lệnh là một chuỗi nhị phân ngắn đại diện cho một thao tác mà CPU có thể thực hiện, từ tính toán và điều khiển luồng chương trình đến truy cập và quản lý bộ nhớ Hiểu rõ tập lệnh của CPU giúp tối ưu hóa hiệu suất phần mềm và quá trình tối ưu hóa biên dịch.

Các lệnh được mô tả bằng kí hiệu gợi nhớ.

Việc gán trị cho cả biểu thức số học và biểu thức logic được thực hiện thông qua một tập hợp các lệnh mã máy Với kiến trúc RISC, quá trình này được tối ưu hóa nhờ các lệnh gán trị hiệu quả, cho phép xử lý nhanh các giá trị trung gian và đảm bảo tính nhất quán khi thực thi các biểu thức trên các bộ xử lý hiện đại.

LOAD Ri, M (địa chỉ) ; M[địa chỉ] ← Ri : nạp dữ liệu

STORE Ri, M(địa chỉ); Ri ← M[địa chỉ] : Cất dữ liệu. Địa chỉ được tính tuỳ theo kiểu định vị được dùng

- Lệnh tính toán số học: tính toán số nguyên trên nội dung của hai thanh ghi Ri, Rj và xếp kết quả vào trong Rk:

ADDD (cộng số có dấu chấm động, chính xác kép)

SUBD (trừ số có dấu chấm động, chính xác kép)

- Lệnh logic: thực hiện phép tính logic cho từng bit một

NEG (lệnh lấy số bù 1 )

Hình 2.8: Minh hoạ lệnh dịch chuyển và quay vòng

Trong hệ thống máy tính, các lệnh dịch chuyển số học (SHIFT) và dịch chuyển logic (ROTATE) có thể dịch dữ liệu sang trái hoặc sang phải, với hoặc không có bit bị bỏ đi ở đầu tùy cách thực hiện Các lệnh này được thực thi trên một thanh ghi và kết quả được lưu vào thanh ghi khác Số lần dịch chuyển—mỗi lần dịch sang trái hoặc sang phải một bit—thường được quy định trong thanh ghi thứ ba Hình 2.5 minh họa cách các lệnh SHIFT và ROTATE hoạt động trong hệ thống.

Cho các kiến trúc kiểu RISC, ta có :

SLL (shift left logical : dịch trái logic)

SRL (shift right logical : dịch phải logic) SRA (shift right arithemtic : dịch phải số học)

Lệnh có điều kiện có dạng :

Nếu thì nếu không

(IF THEN ELSE )

Lệnh này buộc phải ghi nhớ điều kiện và nhảy vòng nếu điều kiện được thoả a) Ghi nhớđiều kiện

Bộ làm tính ALU là thành phần trọng yếu của bộ xử lý, cho ra kết quả tại ngã ra tùy theo các ngã vào và phép tính được thực hiện Đồng thời, ALU còn cung cấp thêm thông tin về kết quả dưới dạng các bit trạng thái, phản ánh các đại lượng logic ĐÚNG hoặc SAI như minh họa trong Hình 2.6.

Trong các bit trạng thái ta có bit dấu S (Sign - Đúng nếu kết quả âm), bit trắc nghiệm zero Z (Zero - Đúng nếu kết quả bằng không), bit tràn OVF

Overflow (tràn số) xảy ra khi phép tính số học làm cho thanh ghi không đủ khả năng lưu trữ kết quả; bit mang thông tin carry (C) được thiết lập khi có carry out, tức là số dư ở ngã ra bằng 1 Các bit còn lại trên thanh ghi trạng thái được gọi là bit mã điều kiện (condition code bits).

Hình 2.9: Bit trạng thái mà ALU tạo ra

Có hai kỹ thuật cơ bản để ghi nhớ các bit trạng thái:

Cách thứ nhất, ghi các trạng thái trong một thanh ghi đa dụng

Ví dụ lệnh CMP Rk, Ri, Rj Lệnh trên sẽ làm phép tính trừ Ri - Rj mà không ghi kết quả phép trừ, mà lại

Bit C ghi các bit trạng thái vào thanh ghi Rk, thanh ghi này được dùng cho lệnh nhảy có điều kiện Kỹ thuật này có lợi ở chỗ cho phép lưu trữ nhiều trạng thái sau các phép tính để dùng về sau, phục vụ cho các quyết định nhảy Tuy nhiên, bất lợi là phải dùng một thanh ghi đa dụng để ghi lại trạng thái sau mỗi phép tính, và số lượng thanh ghi đa dụng bị giới hạn ở 32 trong các bộ xử lý hiện đại.

Cách thứ hai là đưa các bit trạng thái vào một thanh ghi đặc biệt gọi là thanh ghi trạng thái Việc bảo lưu nội dung của thanh ghi trạng thái được giải quyết bằng nhiều cách khác nhau Trong kiến trúc SPARC, chỉ có một số giới hạn đối với các lệnh được phép thay đổi thanh ghi trạng thái; ví dụ, một số lệnh nhất định có quyền thao tác trên thanh ghi trạng thái.

ADDCC và SUBCC là hai lệnh trong kiến trúc PowerPC thực hiện phép cộng ADD và phép trừ SUB đồng thời cập nhật trạng thái điều kiện Các lệnh có hậu tố CC sẽ cập nhật CR (Condition Register) dựa trên kết quả tính toán, cho phép các lệnh nhánh có điều kiện quyết định luồng thực thi một cách nhanh chóng Trong PowerPC, thanh ghi trạng thái được phân thành 8 trường CR0 đến CR7, mỗi trường lưu trữ một nhóm thông tin điều kiện liên quan đến kết quả xử lý ở vị trí tương ứng, tạo điều kiện cho tối ưu hóa kiểm tra điều kiện và điều khiển nhánh trong chương trình.

4 bit, vậy là thanh ghi đã phân thành 8 thanh ghi trạng thái con b) Nhảy vòng

Các lệnh nhảy có điều kiện, bao gồm nhảy đơn và nhảy vòng, chỉ thực hiện khi điều kiện được thỏa mãn; nếu điều kiện không được đáp ứng, chương trình tiếp tục với lệnh kế tiếp Lệnh nhảy xem xét trạng thái của thanh ghi và chỉ thực hiện nhảy khi các điều kiện được nêu trong lệnh là đúng, từ đó điều chỉnh luồng thực thi của chương trình một cách hiệu quả và nhất quán.

Chúng ta xem một ví dụ thực hiện lệnh nhảy có điều kiện

Giả sử trạng thái sau khi bộ xử lý thi hành một tác vụ, được lưu trữ trong thanh ghi, và bộ xử lý thi hành các lệnh sau :

1 CMP R4, R1, R2 : So sánh R1 và R2 bằng cách trừ R1 cho R2 và lưu giữ trạng thái trong R4

2 BGT R4, +2 : Nhảy bỏ 2 lệnh nếu R1 > R2

3 ADD R3, R0, R2 : R0 có giá trị 0 Chuyển nội dung của R2 vào R3

5 ADD R3, R0, R1 : chuyển nội dung R1 vào R3

Nếu R1 > R2 thì chuỗi lệnh được thi hành là 1, 2, 5, 6 được thi hành, nếu không thì chuỗi lệnh 1, 2, 3, 4, 6 được thi hành.

Chuỗi các lệnh trên , trong đó có 2 lệnh nhảy, thực hiện công việc sau đây : Nếu R1 > R2 thì R3 = R1 nếu không R3 = R2

Trong CPU hiện đại, các lệnh nhảy thường làm tốc độ thi hành lệnh chậm lại do tác động lên kỹ thuật ống dẫn (pipeline) Để tối ưu hiệu suất, nhiều bộ xử lý dùng lệnh di chuyển có điều kiện (CMOV) thay cho nhảy ở một số trường hợp nhằm duy trì luồng lệnh liên tục và giảm thiểu stall trong pipeline Việc này giúp tăng hiệu quả thực thi và tối ưu hóa hiệu suất của chương trình.

1 CMP R4, R1, R2 : So sánh R1 và R2 và để các bit trạng thái trong R4

3 MGT R4, R3, R1 : (MGT : Move if greater than) Nếu R1 > R2 thì di chuyển R1 vào R3

Các lệnh vòng lặp có thể được thực hiện bằng lệnh nhảy có điều kiện như đã nêu Trong trường hợp này, số lần lặp được quản lý bởi một bộ đếm vòng lặp và sau mỗi vòng lặp sẽ kiểm tra bộ đếm để xem đã đạt đủ số vòng cần thực hiện hay chưa Việc sử dụng bộ đếm cho phép kiểm soát chính xác chu kỳ lặp, giúp chương trình thực thi đúng số lượt lặp mong muốn và tối ưu hóa luồng điều khiển thông qua nhảy có điều kiện.

Bộ xử lý PowerPC có một lệnh quản lývòng lặp

Với thanh ghi Ri chứa số lần lặp lại Lệnh này làm các công việc sau:

Ri := Ri -1 Nếu Ri 0, PC := PC + độ dời Nếu không thì tiếp tục thi hành lệnh kế

* Thâm nhập bộ nhớ ngăn xếp

Ngăn xếp là một hình thức tổ chức bộ nhớ theo quy tắc LIFO, cho phép chỉ đọc hoặc ghi tại đỉnh ngăn xếp Địa chỉ của đỉnh ngăn xếp được lưu trong một thanh ghi đặc biệt gọi là con trỏ ngăn xếp SP (Stack Pointer) Với cấu trúc ngăn xếp, hai lệnh chính là PUSH và POP được dùng để đẩy dữ liệu lên đỉnh hoặc lấy dữ liệu từ đỉnh Khi thực thi PUSH, SP được điều chỉnh và dữ liệu được ghi vào vị trí đỉnh, còn khi thực thi POP, dữ liệu được đọc từ đỉnh và SP được cập nhật để trỏ đến vị trí phía dưới đỉnh trước đó Stack giúp quản lý tham số và biến cục bộ khi gọi hàm, đồng thời lưu trữ địa chỉ trả về và các thông tin điều phối chương trình.

M (SP) := Ri (Ri là thanh ghi cần viết vào ngăn xếp)

Ri := M(SP) (Ri là thanh ghi, nhận từ lấy ra khỏi ngăn xếp)

Trong các bộ xử lý RISC, việc ghi dữ liệu vào ngăn xếp và lấy dữ liệu ra khỏi ngăn xếp được thực hiện bằng các lệnh thông dụng của kiến trúc Thanh ghi R30 đóng vai trò là con trỏ ngăn xếp, vì vậy mọi thao tác đẩy dữ liệu lên ngăn xếp hoặc kéo dữ liệu xuống đều được thực hiện thông qua các lệnh liên quan đến con trỏ này Các lệnh này cho phép quản lý lưu trữ tạm thời một cách hiệu quả mà không yêu cầu các thao tác đặc biệt, góp phần tối ưu hiệu suất xử lý và tối giản mã lệnh cho việc thao tác ngăn xếp.

ADDI R30, R30, 4 ; tăng con trỏ ngăn xếp lên 4 vì từ dài 32 bit STORE Ri, (R30) ; Viết Ri vào đỉnh ngăn xếp

Việc lấy ra khỏi ngăn xếp được thực hiện bằng các lệnh :

LOAD Ri, (R30) ; lấy số liệu ở đỉnh ngăn xếp và nạp vào Ri SUBI R30, R30,4 ; giảm con trỏ ngăn xếp bớt 4

Các thủ tục có thể được gọi từ bất cứ nơi nào của chương trình bằng lệnh CALL Để sau khi kết thúc thi hành thủ tục chương trình có thể tiếp tục ở đúng vị trí sau lệnh gọi, ta phải lưu lại địa chỉ trở về, tức là địa chỉ của lệnh sau lệnh CALL Khi thi hành thủ tục kết thúc, lệnh RETURN nạp địa chỉ trở về vào PC, cho phép chương trình quay về và tiếp tục thực thi từ vị trí trước khi gọi.

BỘ XỬ LÝ

Đườ ng d ẫ n d ữ li ệ u

Mục tiêu: Mô tả được nhiệm vụ và cách tổ chức đường đi của dữ liệu trong bộ xử lý

2.1 Các thành phần đường dẫn dữ liệu

Phần đường dẫn dữ liệu nằm ở trung tâm kiến trúc máy tính, bao gồm các thành phần chính sau: Đơn vị số học và lôgic (ALU) đảm nhiệm các phép toán và chức năng logic, các mạch dịch đảm bảo sự chuyển tiếp và xử lý dữ liệu, các thanh ghi lưu trữ dữ liệu tạm thời và trạng thái của CPU, cùng với các đường nối kết các bộ phận với nhau để truyền tín hiệu và dữ liệu giữa ALU, mạch dịch và thanh ghi Tổ hợp này tạo thành đường dẫn dữ liệu liên tục, hỗ trợ hiệu quả quá trình xử lý và điều khiển hệ thống.

Phần này chứa hầu hết các trạng thái của bộ xử lý Ngoài các thanh ghi tổng quát, phần đường dẫn dữ liệu còn chứa các thành phần cốt lõi như thanh ghi đếm chương trình (PC – Program Counter) và các khối điều khiển Đơn vị điều khiển (CU) chịu trách nhiệm phát tín hiệu điều khiển và điều phối chu trình lệnh, trong khi Đơn vị số học và logic (ALU) thực hiện các phép toán và thao tác logic Tất cả những thành phần này phối hợp để thực hiện chu trình fetch–decode–execute, quản lý dữ liệu và địa chỉ, từ đó cải thiện hiệu năng và ổn định của hệ thống máy tính.

Tập thanh ghi (RF) Đơn vị ghép nối bus (BIU)

Bus địa Bus điều chỉ khiển

Key components at the CPU–memory interface include the Program Counter (PC), the Status Register (SR), the Temporary register (TEMP), the Memory Address Register (MAR), and the Memory Buffer Register (MBR), together with a multiplexer (MUX) These elements form the end points of the data pathways between the CPU and memory, with the job of scheduling memory access requests issued by the CPU and by the data channels The system uses source buses (S1, S2) and a destination bus (Dest) to manage data flow, coordinating instruction fetches and data transfers across the CPU–memory bus architecture.

2.2 Nhiệm vụ của đường dẫn dữ liệu

Đường dẫn dữ liệu có nhiệm vụ chính đọc toán hạng từ các thanh ghi tổng quát, thực hiện các phép tính trên toán hạng bằng bộ xử lý và ALU, rồi lưu kết quả vào các thanh ghi tổng quát Tại ngã vào và ngã ra của đường dẫn dữ liệu, các thanh ghi tổng quát được kết nối với các mạch chốt A, B và C để điều phối truyền dữ liệu và tín hiệu điều khiển Thông thường, hệ thống sử dụng 32 thanh ghi tổng quát để hỗ trợ các tác vụ tính toán và xử lý dữ liệu một cách hiệu quả.

Phần đường đi của dữ liệu chiếm phân nửa diện tích của bộ xử lý nhưng là phần dễ thiết kế và cài đặt trong bộ xử lý

Hình 3.2: Tổ chức của một xử lý điển hình (Các đường không liên tục là các đường điều khiển)

B ộ điề u khi ể n

Mục tiêu: Hiểu nguyên tắc vận hành của bộ điều khiển mạch điện tử

Hiểu nguyên tắc vận hành của bộđiều khiển vi chương trình

 Đ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 đó

Bộ điều khiển tạo ra các tín hiệu điều khiển di chuyển dữ liệu từ các thanh ghi lên bus hoặc ghi dữ liệu vào các thanh ghi, đồng thời điều khiển các tác vụ của các bộ phận chức năng như ALU và quá trình đọc/ghi vào bộ nhớ Nó cũng phát sinh các tín hiệu để đảm bảo các lệnh được thực thi theo trình tự, giúp máy tính thực hiện chuỗi lệnh một cách tuần tự và chính xác.

3.2 Các phương pháp thiết kế bộđiều khiển a) Bộ điều khiển vi chương trình (Microprogrammed Control Unit)

Hình 3.3: Nguyên tắc vận hành của bộ điều khiển dùng vi chương trình

– Bộ nhớ vi chương trình (ROM) lưu trữ các vi chương trình (microprogram) – Một vi chương trình bao gồm các vi lệnh (microinstruction)

– Mỗi vi lệnh mã hoá cho một vi thao tác (microoperation)

Để thực thi một lệnh, bộ điều khiển cần thực hiện một hoặc một vài vi chương trình Với bộ điều khiển dùng mạch điện tử, cách hiểu vận hành được mô tả qua máy tự động trạng thái hữu hạn: mỗi thời điểm, hệ thống có nhiều thành phần nhưng ở bất kỳ lúc nào đều ở một trạng thái nhất định Mục đích của trạng thái là ghi nhớ những thông tin liên quan trong quá trình hoạt động; vì chỉ có một số trạng thái hữu hạn nên không thể ghi nhớ toàn bộ lịch sử, do vậy thiết kế hệ thống chỉ ghi nhớ những gì quan trọng Ưu điểm của hệ thống như vậy là có thể cài đặt với nguồn lực cố định Ví dụ, máy tự động trạng thái hữu hạn có thể triển khai ở phần cứng máy tính dưới dạng mạch điện hoặc ở dạng chương trình đơn giản, cho phép quyết định dựa trên lượng dữ liệu giới hạn hoặc dựa vào vị trí trong mã lệnh.

Hình 3.4: Nguyên tắc vận hành của bộ điều khiển dùng mạch điện tử

Hình 3.4 cho thấy nguyên lý hoạt động của một bộ điều khiển bằng mạch điện dựa trên máy trạng thái hữu hạn Các đường điều khiển ở phần đường đi dữ liệu là các ngã ra của máy trạng thái hữu hạn, trong khi các ngã vào gồm thanh ghi lệnh chứa lệnh cần thi hành và những thông tin từ bộ đường đi dữ liệu Dựa trên cấu hình các đường vào và trạng thái hiện tại, máy trạng thái hữu hạn sẽ xác định trạng thái tương lai và các đường ra tương ứng với trạng thái đó Bộ điều khiển được triển khai dưới dạng một hay nhiều mạch mảng logic lập trình được (PLA: Programmable Logic Array) hoặc các mạch logic ngẫu nhiên.

Kỹ thuật điều khiển này có tính đơn giản và hiệu quả khi các lệnh có chiều dài cố định và dạng thức đơn giản; nhờ đặc tính này, nó cho phép thiết kế mạch điều khiển nhanh và tiết kiệm tài nguyên Vì vậy, kỹ thuật này được sử dụng nhiều trong các bộ xử lý RISC, nơi lệnh có kích thước cố định và cấu trúc rõ ràng, giúp tối ưu hóa quá trình giải mã, điều phối pipeline và nâng cao hiệu suất xử lý.

Ti ến trình thự c hi ệ n l ệnh máy

- Mục tiêu : Mô tảtiến trình thi hành lệnh mã máy

Việc thi hành một lệnh mã máy có thể chia thành 5 giai đoạn:

 Đọc lệnh (IF: Instruction Fetch)

 Giải mã lệnh (ID: Instruction Decode)

 Thi hành lệnh (EX: Execute)

 Thâm nhập bộ nhớ trong hoặc nhảy (MEM: Memory access)

 Lưu trữ kết quả (RS: Result Storing)

Mỗi giai đoạn được thi hành trong một hoặc nhiều chu kỳ xung nhịp

 Thanh ghi PC chứa địa chỉ lệnh tiếp theo

 Địa chỉ chuyển vào thanh ghi MAR

 Địa chỉ đưa lên bus địa chỉ

 Đơn vị điều khiển yêu cầu đọc bộ nhớ

 Kết quả đưa lên data bus, sao chép vào thanh ghi MBR, đưa vào thanh ghi IR

Hình 3.5:Sơ đồ mô tả quá trình đọc lệnh

4.2 Gi ải mã lệ nh

– Lệnh từ thanh ghi lệnh IR được đưa đếnđơn vị điều khiển

– Đơn vị điều khiển tiến hành giải mã lệnh để xác định thao tác phải thực hiện – Giải mã lệnh xảy ra bên trong CPU

Giai đoạn này thường chỉ được dùng cho các lệnh nạp dữ liệu, lưu dữ liệu và lệnh nhảy

Nhận dữ liệu trực tiếp:

– CPU đưa địa chỉ của toán hạng ra bus địa chỉ

– CPU phát tín hiệu điều khiển đọc

– Toán hạng được đọc vào CPU

– Tương tự như nhận lệnh

Nhận dữ liệu gián tiếp:

Hình 3.6: Sơ đồ tả nhận toán hạng gián tiếp

Quá trình nhận dữ liệu gián tiếp:

 CPU đưa địa chỉra bus địa chỉ

 CPU phát tín hiệu điều khiển đọc

 Nội dung ngăn nhớ được đọc vào CPU, đó chính là địa chỉ của toán hạng

 Địa chỉ này được CPU phát ra bus địa chỉ để tìm ra toán hạng

 CPU phát tín hiệu điều khiển đọc

 Toán hạng được đọc vào CPU

– Có nhiều dạng tuỳ thuộc vào lệnh

– Chuyển giữa các thanh ghi

– Thao tác số học/logic

– Chuyển điều khiển (rẽ nhánh)

Rd ← Ngã ra ALU hoặc Rd ← MBR

 CPU đưa địa chỉ ra bus địa chỉ

 CPU đưa dữ liệu cần ghi ra bus dữ liệu

 CPU phát tín hiệu điều khiển ghi

 Dữ liệu trên bus dữ liệu được copy đến vịtrí xác định  Lưu trữ kết quả trong thanh ghi đích

Hình 3.7: Sơ đồ mô tả quá trình lưu kết quả

Kỹ thuật ống dẫn lệnh

Phần mục tiêu trình bày kỹ thuật xử lý thông tin gọi là ống dẫn (pipeline) Đây là một kỹ thuật cho phép các giai đoạn xử lý khác nhau của nhiều lệnh được thi hành đồng thời, giúp tối ưu hóa hiệu suất hệ thống bằng cách bắt đầu các bước xử lý cho lệnh tiếp theo trong khi các bước trước đang được hoàn tất ở các giai đoạn khác nhau của pipeline.

Ví dụ: chúng ta có những lệnh đều đặn, mỗi lệnh được thực hiện trong cùng một khoảng thời gian Giả sử, mỗi lệnh được thực hiện trong 5 giai đoạn và mỗi giai đoạn được thực hiện trong 1 chu kỳ xung nhịp Các giai đoạn thực hiện một lệnh là: lấy lệnh (IF: Instruction Fetch), giải mã (ID: Instruction Decode), thi hành (EX: Execute), thâm nhập bộ nhớ (MEM: Memory Access), lưu trữ kết quả (RS: Result Storing).

Hình 3.8 cho thấy chỉ trong một chu kỳ xung nhịp, bộ xử lý có thể thực hiện một lệnh (bình thường lệnh này được thực hiện trong 5 chu kỳ).

Chuỗi lệnh Chu kỳ xungnhịp

Lệnh thứ i IF ID EX MEM RS

Lệnh thứ i+1 IF ID EX MEM RS

Lệnh thứ i+2 IF ID EX MEM RS

Lệnh thứ i+3 IF ID EX MEM RS

Lệnh thứ i+4 IF ID EX MEM RS

Hình 3.8: Các giai đoạn khác nhau của nhiều lệnh được thi hành cùng một lúc

So với xử lý tuần tự thông thường, 5 lệnh được thực hiện trong 25 chu kỳ xung nhịp; với kỹ thuật ống dẫn (pipeline), 5 lệnh chỉ mất 9 chu kỳ xung nhịp, giúp tăng hiệu suất và rút ngắn thời gian xử lý tổng thể.

Như vậy kỹ thuật ống dẫn làm tăng tốc độ thực hiện các lệnh Tuy nhiên kỹ thuật ống dẫn có một số ràng buộc:

Để thi hành mỗi giai đoạn của một lệnh, cần có một mạch điện đảm bảo các giai đoạn được thi hành đồng thời Trong một bộ xử lý không dùng kỹ thuật ống dẫn, ta có thể dùng bộ ALU để cập nhật thanh ghi PC, cập nhật địa chỉ của toán hạng bộ nhớ, địa chỉ ô nhớ mà chương trình cần nhảy tới và thực hiện các phép tính trên các toán hạng, vì các phép tính này có thể diễn ra ở nhiều giai đoạn khác nhau.

- Phảicó nhiều thanh ghi khác nhau dùng cho cáctác vụđọc và viết.Trênhình

3.8, tại một chu kỳ xung nhịp, ta thấycùng một lúc có 2 tác vụđọc (ID, MEM) và 1 tác vụ viết (RS)

Trong một máy có kỹ thuật ống dẫn, kết quả của tác vụ trước đôi khi là toán hạng nguồn cho tác vụ tiếp theo, tạo ra chu trình phụ thuộc dữ liệu giữa các giai đoạn xử lý Vì vậy sẽ xuất hiện thêm những khó khăn về đồng bộ hóa, độ trễ và quản lý tài nguyên mà chúng ta sẽ thảo luận ở mục sau Việc tận dụng đúng kết quả từ tác vụ trước có thể nâng cao hiệu suất, nhưng đồng thời đòi hỏi cân bằng giữa tốc độ và độ phức tạp của hệ thống để tối ưu hóa hiệu quả xử lý.

- Cần phải giải mã các lệnh một cách đơn giản để có thể giải mã và đọc các toán hạng trong một chu kỳ duy nhất của xung nhịp

Để thi hành các lệnh số học dài và phức tạp trên một hệ thống máy tính, cần có các bộ làm tính ALU hiệu quả được thiết kế tối ưu Những khối ALU này phải có khả năng xử lý nhanh các lệnh số học, duy trì độ chính xác và kết quả của phép toán ngay cả khi chu trình lệnh dài, và thực hiện trong thời gian ngắn hơn một chu kỳ xung nhịp Việc tối ưu ALU sẽ giảm độ trễ, tăng thông lượng và nâng cao hiệu suất tính toán tổng thể của hệ thống máy tính.

- Cần phải có nhiều thanh ghi lệnh để lưu giữ lệnh mà chúng ta phải xem xét cho mỗi giai đoạn thi hành lệnh

- Cuối cùng phải có nhiều thanh ghi bộ đếm chương trình PC để có thể tái tục các lệnh trong trường hợp có ngắt quãng.

K ỹ thu ật siêu ố ng d ẫ n l ệ nh

Mục tiêu: trình bày kỹ thuật xử lý thông tin siêu ống dẫn

Máy tính áp dụng kỹ thuật siêu ống dẫn bậc n bằng cách chia các giai đoạn của kỹ thuật ống dẫn đơn giản thành n giai đoạn con, mỗi giai đoạn được thực hiện trong thời gian Tc/n Độ hữu hiệu của kỹ thuật này tương đương với thi hành n lệnh trong mỗi chu kỳ Tc Hình 3.9 trình bày ví dụ về siêu ống dẫn bậc 2 và so sánh với siêu ống dẫn đơn giản; ta thấy trong một chu kỳ Tc, máy dùng kỹ thuật siêu ống dẫn thực thi 2 lệnh thay vì chỉ 1 lệnh của kỹ thuật ống dẫn đơn giản.

1 lệnh trong máy dùng kỹ thuật ống dẫn bình thường Trong máy tính siêu ống dẫn, tốc độ thực hiện lệnh tương đương với việc thực hiện một lệnh trong khoảng thời gian Tc/n Các bất lợi của siêu ống dẫn là thời gian thực hiện một giai đoạn con ngắn Tc/n và việc trì hoãn trong thi hành lệnh nhảy lớn Trong ví dụ ở Hình 3.9, nếu lệnh thứ i là một lệnh nhảy tương đối thì lệnh này được giải mã trong giai đoạn ID, địa chỉ nhảy đến được tính vào giai đoạn EX, lệnh phải được nhảy tới là lệnh thứ i+4, vậy có trì trệ 3 lệnh thay vì 1 lệnh trong kỹ thuật ống dẫn bình thường

Hình 3.9: Siêu ống dẫn bậc 2 so với siêu ống dẫn đơn giản.

Trong khoảng thời gian Tc, máy có siêu ống dẫn làm 2 lệnh thay vì 1 lệnh như trong máy có kỹ thuật ống dẫn đơn giản.

Các chướng ngại của ống dẫn lệnh

Mục tiêu: biết được các khó khăn khi sử dụng kĩ thuật ống dẫn và cách khắc phục

Khi thi hành lệnh trong một máy tính dùng kỹ thuật ống dẫn, có nhiều trường hợp làm cho việc thực hiện kỹ thuật ống dẫn không thực hiện được như là: thiếu các mạch chức năng, một lệnh dùng kết quả của lệnh trước, một lệnh nhảy

Ta có thể phân biệt 3 loại khó khăn (chướng ngại): khó khăn do cấu trúc, khó khăn do số liệu và khó khăn do điều khiển

7.1 Chướng ngại do cấu trúc

Xung đột cấu trúc xảy ra khi hai lệnh cùng cố gắng sử dụng một nguồn tại cùng một thời điểm, có thể là ghi kết quả vào một thanh ghi, truy cập một ô nhớ, yêu cầu một bộ tính toán số học, hoặc khi nạp lệnh và đọc dữ liệu từ bộ nhớ diễn ra đồng thời Để khắc phục xung đột kiểu này, ta thường chèn trễ giữa các chu kỳ lệnh hoặc tổ chức lại các lệnh nhằm giảm cạnh tranh tài nguyên và đảm bảo các thao tác diễn ra theo đúng thứ tự ưu tiên.

7.2 Chướng ngại do dữ liệu

Lấy ví dụ trường hợp các lệnh liên tiếp sau:

Hình 3.10 cho thấy R1, kết quả của lệnh 1, chỉ có thể được dùng cho lệnh 2 sau giai đoạn MEM của lệnh 1; tuy nhiên, R1 lại được dùng cho lệnh 2 ở giai đoạn EX của lệnh 1 Ngoài ra, R1 cũng được dùng cho các lệnh 3 và 4, cho thấy sự phụ thuộc dữ liệu qua các giai đoạn xử lý trong pipeline.

IF ID EX MEM RS

2- SUB R4, R1, R5 IF ID EX MEM RS

3- AND R6, R1, R4 IF ID EX MEM RS

4- OR R8, R1, R9 IF ID EX MEM RS

Hình 3.10 mô tả một chuỗi lệnh gặp khó khăn vì dữ liệu Để khắc phục tình trạng này, một bộ phận phần cứng được dùng để đưa kết quả từ đường dữ liệu trực tiếp vào ALU và ghi vào một trong các thanh ghi, như được thể hiện trong Hình 3.11.

Hình 3.11: ALU với bộ phận phần cứng đưa kết quả tính toán trở lại ngã vào

Khi bộ phận phần cứng phát hiện kết quả của ALU được dùng làm toán hạng cho một phép tính, nó sẽ tác động lên mạch đa hợp (multiplexer) để điều khiển đường tín hiệu, đưa đầu ra của ALU vào đầu vào của ALU hoặc vào đầu vào của một đơn vị chức năng khác khi cần thiết.

Để hạn chế xung đột dữ liệu, ta có thể dùng đường dữ liệu nội bộ đặc biệt và kết hợp với việc tổ chức lại các lệnh trong chương trình Phương pháp này giúp đồng bộ dữ liệu giữa các thành phần, giảm xung đột khi xử lý song song và cải thiện hiệu suất Đồng thời, tối ưu hóa cấu trúc lệnh trong chương trình sẽ tăng tính nhất quán của dữ liệu, dễ bảo trì và cho hiệu quả vận hành cao hơn.

7.3 Chướng ngại do điều khiển

Trong hệ thống máy tính, các lệnh có thể thay đổi trình tự thi hành bằng cách nhảy tới một địa chỉ mới, khiến việc điều khiển chương trình trở nên phức tạp vì PC tăng đều sau mỗi lệnh Lệnh nhảy có thể nhảy đến một địa chỉ tuyệt đối được lưu trong một thanh ghi hoặc nhảy đến một địa chỉ xác định theo kiểu địa chỉ tương đối so với địa chỉ hiện tại của bộ đếm chương trình (PC) Các lệnh nhảy này có thể là nhảy có điều kiện hoặc nhảy vô điều kiện, tùy thuộc vào ngữ cảnh thực thi.

Trong trường hợp đơn giản nhất, tác vụ nhảy không thể biết trước giai đoạn giải mã (xem hình 3.4) Do đó, nếu lệnh nhảy bắt đầu ở chu kỳ C thì lệnh mà chương trình nhảy tới chỉ có thể bắt đầu ở chu kỳ C+2 Ngoài ra, phải biết địa chỉ cần nhảy đến mà ta có ở cuối giai đoạn giải mã ID Trong lệnh nhảy tương đối, ta phải cộng độ dời chứa trong thanh ghi lệnh IR vào thanh ghi PC Việc tính địa chỉ này chỉ được thực hiện ở giai đoạn ID với điều kiện phải có một mạch công việc riêng biệt.

Vậy trong trường hợp lệnh nhảy không điều kiện, lệnh mà chương trình nhảy đến bắt đầu thực hiện ở chu kỳ C+2 nếu lệnh nhảy bắt đầu ở chu kỳ C

Đối với lệnh nhảy có điều kiện, điều kiện phải được tính toán và kết quả so sánh được lưu lại để quyết định nhảy Thông thường, các kiến trúc RISC đặt kết quả này vào thanh ghi trạng thái hoặc vào một thanh ghi tổng quát Trong cả hai trường hợp, việc đọc điều kiện tương đương với việc đọc thanh ghi Việc đọc thanh ghi có thể được thực hiện trong phân nửa chu kỳ cuối của giai đoạn ID.

Trong lệnh nhảy có điều kiện, một trường hợp khó khăn có thể nảy sinh khi điều kiện được xác định bằng phép so sánh hai thanh ghi và lệnh nhảy chỉ được thực hiện nếu kết quả so sánh đúng Việc tính toán trên các đại lượng logic không thể hoàn tất trong một nửa chu kỳ đồng hồ, nên thời gian thực hiện lệnh nhảy có điều kiện bị kéo dài Các thiết kế máy tính và chiến lược tối ưu thường tránh những tình huống như vậy để không làm giảm hiệu suất hoạt động của hệ thống.

Trong trường hợp đơn giản, ta có thể xác định địa chỉ nhảy tới và điều kiện nhảy ở cuối giai đoạn ID Dù quá trình có thể bị chậm một chu kỳ, vẫn có nhiều cách để giải quyết vấn đề này.

Phương pháp đầu tiên là đóng băng kỹ thuật ống dẫn trong một chu kỳ, nghĩa là ngừng thi hành lệnh thứ i+1 khi lệnh thứ i là lệnh nhảy Việc này khiến ta mất một chu kỳ cho mỗi lệnh nhảy, làm giảm hiệu suất xử lý và tăng độ trễ của toàn bộ chu trình thực thi.

Cách thứ hai là thi hành lệnh sau lệnh nhảy; nhưng hiệu quả của một lệnh nhảy bị chậm mất một lệnh, nghĩa là lệnh theo sau lệnh nhảy được thực hiện trước khi lệnh mà chương trình phải nhảy tới được thực hiện Vì vậy, chương trình dịch hoặc người lập trình có nhiệm vụ xen vào một lệnh hữu ích ngay sau lệnh nhảy nhằm tối ưu hoá luồng thực thi và tận dụng thời gian trễ để thực hiện công việc có ích.

Trong nhảy có điều kiện, lệnh nhảy có thể được thực thi hoặc không thực thi tùy thuộc vào điều kiện Lệnh được đặt sau lệnh nhảy sẽ không làm sai lệch chương trình dù điều kiện nhảy đúng hay sai.

Bộ xử lý RISC SPARC có các lệnh nhảy với tính năng huỷ bỏ (annul) Các lệnh này cho phép thi hành lệnh ở ngay sau lệnh nhảy nếu điều kiện nhảy đúng, và huỷ bỏ việc thi hành lệnh đó nếu điều kiện nhảy sai.

Các loại ngắt

Mục tiêu:Mô tảnhiệm vụ của ngắt, phân biệt được các loại ngắt.

Ngắt là cơ chế quản lý sự kiện của hệ thống máy tính cho phép CPU tạm dừng chương trình đang thực thi để chuyển sang thực thi một chương trình khác, thường gọi là chương trình con phục vụ ngắt (ISR) Quá trình này giúp hệ thống nhanh chóng xử lý các sự kiện bên ngoài hoặc nội bộ, như tín hiệu từ thiết bị, nhịp timer hoặc hành động của người dùng, và sau khi ISR hoàn tất, CPU quay về chương trình đang bị gián đoạn để tiếp tục thực thi.

Phần lớn các nhà sản xuất máy tính, như IBM và Intel, dùng từ ngắt quãng để ám chỉ sự kiện này, trong khi một số hãng khác lại chọn từ "ngoại lệ" để diễn đạt cùng hiện tượng Sự khác biệt về thuật ngữ này có thể ảnh hưởng đến cách người đọc tiếp cận thông tin và cách tối ưu nội dung cho SEO, khi một phía ưu tiên "ngắt quãng" còn phía kia sử dụng "ngoại lệ" Vì vậy, việc duy trì sự nhất quán về thuật ngữ trong toàn bộ bài viết là quan trọng để người đọc dễ hiểu và cải thiện khả năng xếp hạng từ khóa liên quan đến sự kiện này.

“lỗi”, “bẩy” để chỉ định hiện tượng này

Bộ điều khiển của CPU được coi là thành phần khó thiết kế nhất, và việc xử lý ngắt quãng là khía cạnh khó khăn nhất của quá trình điều khiển Để nhận biết một ngắt quãng xuất hiện trong quá trình thi hành lệnh, hệ thống cần điều chỉnh chu kỳ xung nhịp sao cho phù hợp, và sự điều chỉnh này có thể ảnh hưởng đến hiệu suất của máy tính.

Ngắt quãng được phát minh để nhận diện sai sót trong tính toán số học và để ứng dụng cho các hiện tượng thời gian thực Hiện nay ngắt quãng được dùng để xử lý nhanh các sự kiện quan trọng, điều khiển luồng tác vụ và đảm bảo tính đồng bộ của hệ thống Các ứng dụng phổ biến của ngắt quãng gồm điều khiển thiết bị và cảm biến, xử lý dữ liệu thời gian thực và tối ưu hóa phản hồi hệ thống Việc sử dụng ngắt quãng có thể giúp giảm độ trễ, nâng cao hiệu suất và đảm bảo tính ổn định khi các sự kiện xảy ra đồng thời.

 Ngắt do lỗi khi thực hiện chương trình, ví dụ: tràn số, chia cho 0

 Ngắt do lỗi phần cứng, ví dụ lỗi bộ nhớ RAM

 Ngắt do mô-đun vào-ra phát tín hiệu ngắt đến CPU yêu cầu trao đổi dữ liệu.

 Người lập trình muốn dùng dịch vụ của hệ điều hành

 Báo tràn số liệu trong tính toán số học

 Trang bộ nhớ thực sự không có trong bộ nhớ

 Báo vi phạm vùng cấm của bộ nhớ

 Báo dùng một lệnh không có trong tập lệnh

Trong hệ thống xử lý, dù ngắt quãng hiếm xảy ra nhưng bộ xử lý phải được thiết kế để có thể lưu giữ trạng thái hiện tại trước khi nhảy vào phục vụ ngắt Sau khi hoàn tất chương trình phục vụ ngắt, bộ xử lý sẽ khôi phục trạng thái đã lưu để tiếp tục thực thi công việc đang dở dang, đảm bảo tính liên tục và hiệu suất của hệ thống.

8.3 Hoạt động của ngắt Để đơn giản việc thiết kế, một vài bộ xử lý chỉ chấp nhận ngắt sau khi thực hiện xong lệnh đang chạy.Khi một ngắt xảy ra, bộ xử lý thi hành các bước sau đây:

1 Thực hiện xong lệnh đang làm

2 Lưu trữ trạng thái hiện tại

3 Nhảy đến chương trình phục vụ ngắt

4 Khi chương trình phục vụ chấm dứt, bộ xử lý khôi phục lại trạng thái cũ của nó và tiếp tục thực hiện chương trình mà nó đang thực hiện khi bị ngắt

Sơ đồ mô tả hoạt động ngắt

Hình 3.12: Sơ đồ mô tả chu trình ngắt

 Nội dung của bộ đếm chương trình PC (địa chỉ trở về sau khi ngắt) được đưa ra bus dữ liệu

 CPU đưa địa chỉ(thường được lấy từ con trỏngăn xếp SP) ra bus địa chỉ

 CPU phát tín hiệu điều khiển ghi bộ nhớ

 Địa chỉ trở về trên bus dữ liệu được ghi ra vị trí xác định (ở ngăn xếp)

 Địa chỉ lệnh đầu tiên của chương trình con điều khiển ngắt được nạp vào PC.

CÂU HỎI VÀ BÀI TẬ P

1 Các thành phần và nhiệm vụ của đường đi dữ liệu?

2 Thế nào là ngắt quãng? Các giai đoạn thực hiện ngắtquãng của CPU

3 Vẽ hình để mô tả kỹ thuật ống dẫn

4 Các khó khăn trong kỹ thuật ống dẫn và cách giải quyết khó khăn này.

BỘ NH Ớ

THIẾT BỊ NHỚ NGOÀI

CÁC LOẠI BUS

NGÔN NGỮ ASSEMBLY

Ngày đăng: 29/12/2022, 15:24

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm