Ví dụ về kiến trúc máy tính

Phần này giới thiệu về Kiến trúc phần mềm Bộ xử lý. Giới thiệu các thành phần cơ bản của một hệ thống máy tính, kiến trúc máy tính, tập lệnh và các kiểu định vị cơ bản. Khái niệm về kiến trúc RISC và CISC, ngôn ngữ cấp cao và ngôn ngữ máy.

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

Thành phần cơ bản của một bộ máy tính gồm: bộ xử lý trung tâm [CPU: Central Processing Unit], bộ nhớ trong, các bộ phận nhập-xuất thông tin. Các bộ phận trên được kết nối với nhau thông qua các hệ thống bus. Hệ thống bus bao gồm: bus địa chỉ, bus dữ liệu và bus điều khiển. Bus địa chỉ và bus dữ liệu dùng trong việc chuyển dữ liệu giữa các bộ phận trong máy tính. Bus điều khiển làm cho sự trao đổi thông tin giữa các bộ phận được đồng bộ. Thông thường người ta phân biệt một bus hệ thống dùng trao đổi thông tin giữa CPU và bộ nhớ trong [thông qua cache], và một bus vào-ra dùng trao đổi thông tin giữa các bộ phận vào-ra và bộ nhớ trong.

Một chương trình sẽ được sao chép từ đĩa cứng vào bộ nhớ trong cùng với các thông tin cần thiết cho chương trình hoạt động, các thông tin này được nạp vào bộ nhớ trong từ các bộ phận cung cấp thông tin [ví dụ như một bàn phím hay một đĩa từ]. Bộ xử lý trung tâm sẽ đọc các lệnh và dữ liệu từ bộ nhớ, thực hiện các lệnh và lưu các kết quả trở lại bộ nhớ trong hay cho xuất kết quả ra bộ phận xuất thông tin [màn hình hay máy in].

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

  • Bộ nhớ trong: Đây là một tập hợp các ô nhớ, mỗi ô nhớ có một số bit nhất định và chứa một thông tin được mã hoá thành số nhị phân mà không quan tâm đến kiểu của dữ liệu mà nó đang chứa. Các thông tin này là các lệnh hay số liệu. Mỗi ô nhớ của bộ nhớ trong đều có một địa chỉ. Thời gian thâm nhập vào một ô nhớ bất kỳ trong bộ nhớ là như nhau. Vì vậy, bộ nhớ trong còn được gọi là bộ nhớ truy cập ngẫu nhiên [RAM: Random Access Memory]. Độ dài của một từ máy tính [Computer Word] là 32 bit [hay 4 byte], tuy nhiên dung lượng một ô nhớ thông thường là 8 bit [1 Byte].
  • Bộ xử lý trung tâm [CPU]: đây là bộ phận thi hành lệnh. CPU lấy lệnh từ bộ nhớ trong và lấy các số liệu mà lệnh đó xử lý. Bộ xử lý trung tâm gồm có hai phần: phần thi hành lệnh và phần điều khiển. Phần thi hành lệnh bao gồm bộ làm toán và luận lý [ALU: Arithmetic And Logic Unit] và các thanh ghi. Nó có nhiệm vụ làm các phép toán trên số liệu. Phần điều khiển có nhiệm vụ đảm bảo thi hành các lệnh một cách tuần tự và tác động các mạch chức năng để thi hành các lệnh.
  • Bộ phận vào - ra: đây là bộ phận xuất nhập thông tin, bộ phận này thực hiện sự giao tiếp giữa máy tính và người dùng hay giữa các máy tính trong hệ thống mạng [đối với các máy tính được kết nối thành một hệ thống mạng]. Các bộ phận xuất nhập thường gặp là: bộ lưu trữ ngoài, màn hình, máy in, bàn phím, chuột, máy quét ảnh, các giao diện mạng cục bộ hay mạng diện rộng...Bộ tạo thích ứng là một vi mạch tổng hợp [chipset] kết nối giữa các hệ thống bus có các tốc độ dữ liệu khác nhau.

Định nghĩa kiến trúc máy tính[edit]

Kiến trúc máy tính bao gồm ba phần: Kiến trúc phần mềm, tổ chức của máy tính và lắp đặt phần cứng.

Kiến trúc phần mềm của máy tính chủ yếu là kiến trúc phần mềm của bộ xử lý, bao gồm: tập lệnh, dạng các lệnh và các kiểu định vị.

  • Trong đó, tập lệnh là tập hợp các lệnh mã máy [mã nhị phân] hoàn chỉnh có thể hiểu và được xử lý bới bộ xử lý trung tâm, thông thường các lệnh trong tập lệnh được trình bày dưới dạng hợp ngữ. Mỗi lệnh chứa thông tin yêu cầu bộ xử lý thực hiện, bao gồm: mã tác vụ, địa chỉ toán hạng nguồn, địa chỉ toán hạng kết quả, lệnh kế tiếp [thông thường thì thông tin này ẩn].
  • Kiểu định vị chỉ ra cách thức thâm nhập toán hạng.

Kiến trúc phần mềm là phần mà các lập trình viên hệ thống phải nắm vững để việc lập trình hiểu quả, ít sai sót.

  • Phần tổ chức của máy tính liên quan đến cấu trúc bên trong của bộ xử lý, cấu trúc các bus, các cấp bộ nhớ và các mặt kỹ thuật khác của máy tính. Phần này sẽ được nói đến ở các chương sau.
  • Lắp đặt phần cứng của máy tính ám chỉ việc lắp ráp một máy tính dùng các linh kiện điện tử và các bộ phận phần cứng cần thiết. Chúng ta không nói đến phần này trong giáo trình.

Ta nên lưu ý rằng một vài máy tính có cùng kiến trúc phần mềm nhưng phần tổ chức là khác nhau [VAX- 11/780 và VAX 8600]. Các máy VAX- 11/780 và VAX- 11/785 có cùng kiến trúc phần mềm và phần tổ chức gần giống nhau. Tuy nhiên việc lắp đặt phần cứng các máy này là khác nhau. Máy VAX- 11/785 đã dùng các mạch kết hiện đại để cải tiến tần số xung nhịp và đã thay đổi một ít tổ chức của bộ nhớ trong.

Các kiểu thi hành một lệnh[edit]

  1. 6.1. Phân loại kiến trúc bộ lệnh
    6.2. Địa chỉ bộ nhớ
    6.3. Mã hóa tập lệnh
    6.3.1. Các tiêu chuẩn thiết kế dạng thức lệnh
    6.3.2. Opcode mở rộng
    6.3.3. Ví dụ về dạng thức lệnh
    6.3.4. Các chế độ lập địa chỉ
    6.4. Bộ lệnh
    6.4.1. Nhóm lệnh truyền dữ liệu
    6.4.2. Nhóm lệnh tính toán số học
    6.4.3. Nhóm lệnh Logic
    6.4.4. Nhóm các lệnh dịch chuyển
    6.4.5. Nhóm các lệnh có điều kiện và lệnh nhảy
    6.5. Cấu trúc lệnh CISC và RISC

  1. 6.1. Phân loại kiến trúc bộ lệnh

  • kiến trúc ngăn xếp [stack],  

  • kiến trúc thanh ghi tích lũy [Accumulator] 

  • kiến trúc thanh ghi đa dụng GPRA[general-purpose register architecture].  

  1. Ví dụ phép tính C = A + B được dùng trong các kiểu kiến trúc:

  1. Kiểu kiến trúc GPR

  • Ưu điểm  

    • Dùng thanh ghi, một dạng lưu trữ trong của CPU có tốc độ nhanh hơn bộ nhớ ngoài 

    • Trình tự thực hiện lệnh có thể ở mọi thứ tự 

    • Dùng thanh ghi để lưu các biến và như vậy sẽ giảm thâm nhập đến bộ nhớ => chương trình sẽ nhanh hơn 

  • Nhược điểm 

    • Lệnh dài 

    • Số lượng thanh ghi bị giới hạn 

  • Ngăn xếp [Stack]? 

  • Thanh ghi tích luỹ[Accumulator Register]? 

  1. Kiểu kiến trúc thanh ghi đa dụng

  • lệnh có 2 toán hạng  

    1. ADD A, B

  • lệnh có 3 toán hạng  

    1. ADD A, B, C

  • Số toán hạng bộ nhớ có thể thay đổi từ 0 tới 3 

  • Các loại toán hạng 

      • thanh ghi-thanh ghi [kiểu này còn được gọi nạp - lưu trữ],  

      • thanh ghi - bộ nhớ  

      • bộ nhớ - bộ nhớ.  

  1. Các tiêu chuẩn thiết kế dạng thức lệnh

  • Có 4 tiêu chuẩn thiết kế: 

    • Mã lệnh ngắn ưu việt hơn mã lệnh dài 

    • Độ dài mã lệnh đủ đế biểu diễn tất cả phép toán mong muốn 

    • độ dài word của máy bằng bội số nguyên của độ dài ký tự 

    • số BIT trong trường địa chỉ càng ngắn càng tốt 

  1. Ví dụ thiết kế máy với ký tự 8 bit và bộ nhớ chính chứa 216 ký tự

    1. + Ô nhớ kích thước 8 bit => trường địa chỉ cần 16 bit

      + Ô nhớ kích thước 32 bit  => trường địa chỉ cần 14 bit

  1. dạng thức lệnhPDP-11

  • Mã hóa lệnh trên máy PDP-11 

  • tám cách trên PDP-11 

  • opcode mở rộng có dạng  x111 

  • các lệnh một toán hạng  

    • opcode 10 bit: 4 bit opcode và 6 bit của trường toán hạng nguồn   

    • mode/register 6 bit 

  1. Họ lntel 8088/80286/80386/Pentium

  • Dạng thức lệnh của các máy tính Intel: 

    • Cấu tạo phức tạp  

    • kế thừa từ nhiều thế hệ 

    • bốn cách lập địa chỉ toán hạng [so với tám cách trên PDP-11] 

  1. Các chế độ lập địa chỉ

  • Địa chỉ tức thời – Immediate 

  • Địa chỉ trực tiếp – Direct 

  • Địa chỉ gián tiếp – Indirect 

  • Địa chỉ thanh ghi – Register 

  • Địa chỉ  gián tiếp thanh ghi – Register inderect 

  • Địa chỉ dịch chuyển – Displacement 

  • Địa chỉ ngăn xếp - Stack 

  1. Các chế độ lập địa chỉ

  • Lập địa chỉ tức thời [Immediate Addressing]: 

    • OPERAND = A 

    • MOVR1, #4 

  • Lập địa chỉ trực tiếp [Direct Addressing]: 

    • EA = A 

  • Lập địa chỉ gián tiếp [Indirect Addressing] 

    • EA = [A] 

    • một con trỏ [trong C++] 

  • Lập địa chỉ thanh ghi [Register Addressing] 

    • trỏ tới một thanh ghi  

    • Các máy ngày nay được thiết kế có các thanh ghi vì lý do?  

  1. Các chế độ lập địa chỉ

  • Địa chỉ gián tiếp thanh ghi [Register Indirect] 

    • EA = [R] 

  • Địa chỉ Địa chỉ dịch chuyển – Displacement 

    • EA = A + [R] 

  • Địa chỉ ngăn xếp – Stack 

    • FILO [first in last out] 

  1. Ví dụ lệnh Add với tham chiếu bộ nhớ

  • Add R1, @[R3] 

  1. 6.4. Bộ lệnh

  • Quá trình biên dịch ra ngôn ngữ máy 

  1. Nhóm lệnh tính toán số học

  • ADD đích, nguồn// đích đích + nguồn 

  • SUB  đích, nguồn// đích đích – nguồn 

  • Ví dụ: 

    1. ADD AX, BX// AX AX + BX

      ADD AL,74H// AL AL + [74H]

      SUBCL, AL// CL CL – AL

      SUBAX, 0405H// AX AX – 0405H

  1. Nhóm lệnh tính toán số học

  • Các lệnh tính toán số học cơ bản 

  1. Nhóm các lệnh dịch chuyển số học hoặc logic [SHIFT ]

  • SRL [Shift Right Logical - dịch phải logic] 

  • SLL [Shift Left Logical - dịch trái logic] 

  • SRA [Shift Right Arithmetic - dịch phải số học] 

  • SLA [Shift Left Arithmetic – dịch trái số học] 

  1. Các lệnh có điều kiện và lệnh nhảy

  1. Nếu thì nếu không

    [IF THEN ELSE ]

  1. Các lệnh có điều kiện và lệnh nhảy

  1. Ví dụ:

    LOAD R1, #100

  1. Loop: ADD R0, [R2]+

    DECREMENT R1

    BEQZR1, Loop

  1. Cấu trúc lệnh CISC và RISC

  1. RISC

  1. CISC

  1. Độ dài lệnh cố định [32 bit]

    Sử dụng kiến trúc load-store các lệnh xử lý dữ liệu hoạt động chỉ trong thanh ghi và cách ly với các lệnh truy cập bộ nhớ

    Một số lớn các thanh ghi đa dụng 32 bit

    Có một số ít lệnh [thường dưới 100 lệnh]

    Có một số ít các kiểu định vị

    Có một số ít dạng lệnh [một hoặc hai]

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

  1. Kích thước tập lệnh thay đổi

    Giá trị trong bộ nhớ được dùng như như toán hạng trong các chỉ lệnh xử lý dữ liệu

    Có rất nhiều thanh ghi, nhưng hầu hết chỉ để sử dụng cho một mục đích riêng biệt nào đấy

    Có rất nhiều lệnh [khoảng 500]

    Có nhiều kiểu định vị [xem phần 6.3.4]

    Có nhiều dạng lệnh

    Có nhiều lệnh khác cũng thâm nhập vào bộ nhớ được

  1. Giải mã lệnh logic bằng kết nối phần cứng

    Thực thi chỉ lệnh theo cấu trúc dòng chảy [xem hình 7.9 trong chương sau]

    Một lệnh thực thi trong 1 chu kì xung nhịp

  1. Sử dụng rất nhiều code trong ROM giải mã các chỉ lệnh

    Các máy cũ phải tuần tự hết dòng lệnh này mới đến dòng lệnh khác

    Cần nhiều chu kì xung nhịp để hoàn thành một lệnh

  1. CÂU HỎI VÀ BÀI TẬP CHƯƠNG 6

  1. 1. Giả sử cần thiết kế máy với ký tự 8 bit và bộ nhớ chính chứa 224 ký tự. Hãy cho biết trường địa chỉ cần bao nhiêu bit trong trường hợp:

    1. a] Ô nhớ kích thước 8 bit

      b] Ô nhớ kích thước 16 bit  

      c] Ô nhớ kích thước 32 bit  

  1. 2. Thiết kế opcode mở rộng nhằm cho phép mã hóa nội dung sau trong lệnh 36 bit

    • 7 lệnh có hai địa chỉ 15 bit và một số hiệu thanh ghi 3 bit 

    • 500 lệnh có một địa chỉ 15 bit và một số hiệu thanh ghi 3 bit 

    • 50 lệnh không có địa chỉ hoặc thanh ghi 

  1. 3. Có thể thiết kế opcode mở rộng để cho phép mã hóa nội dung sau trong lệnh 12 bit được không? Trường thanh ghi rộng 3 bit.

    • 4 lệnh có ba thanh ghi 

    • 255 lệnh có hai thanh ghi 

    • 2048 lệnh không có thanh ghi 

Chủ Đề