KIẾN TRÚC MÁY TÍNH

Chương 1: Giới thiệu kiến trúc máy tính

 Định lý Demogan

1.    Các cổng luận lý cơ bản:

2.    Mạch cộng bán phần: (Half adder)

  • S là tổng của A và B
  • C là số nhớ ra từ phép cộng

    Rút gọn ta được:
    S = AB
    C = AB

    1.    Mạch cộng toàn phần: (Full adder)



    Rút gọn ta được:
            S = C0  (A  B)
            C = AB + C0 (A  B) = AB + C0 (A + B)

    Có thể thấy một mạch cộng toàn phần gồm hai mạch cộng bán phần và một cổng OR.

    2.    Mạch cộng 4 bit:

    3.    Mạch trừ bán phần (Half subtractor-Không mượn)

                Rút gọn ta được:
    D = A ⊕ B
    Br = ĀB

    4.    Mạch trừ toàn phần (Full subtractor):

    Rút gọn ta được:
    D = B0 ⊕ A ⊕ B
    Br = ĀB + B0 (Ā + B)

    Chương 2: Bộ xử lý

    5.    Thanh ghi lập trình được:

    Khái niệm:
    Thanh ghi lập trình được cho phép người lập trình truy xuất các thanh ghi nà bằng hợp ngữ hoặc mã máy.

    Thanh ghi đa dụng gồm(General purpose register)


    • Thanh ghi AX (Accumulator register) :Thanh ghi tích lũy lưu kết quả phép toán
    • Thanh ghi BX (Base register): Thanh ghi cơ sở định vị vị trí bộ nhớ
    • Thanh ghi CX (Count register): Thanh ghi đếm chứa số lần lặp của vòng lặp
    • Thanh ghi DX (Data register): Dùng để lưu kết quả, định vị các cổng nhân và chia
    • SI (Source index): Chứa địa chỉ chuỗi nguồn
    • DI (Destination index): Chứa địa chỉ chuỗi đích
    • SP (Stack pointer): Dùng làm con trỏ stack
    • BP (Base pointer): Con trỏ cơ sở dùng trong phép toán định vị vị trí cơ sở khi truy xuất stack
    • Thanh ghi chuyên dụng (special-purpose register):

      • IP (Instruction pointer) : Con trỏ lệnh, chứa địa chỉ của lệnh.

      Thanh ghi dữ liệu(Data register)

      Thanh ghi mã địa chỉ :(Address register)


      • Cờ dấu(SF- sign flag): Chứa bit cao nhất của phép toán (0 = +, 1 = -)
      • Cờ zero(ZF- zero flag): Khi kết quả phép toán bằng 0 => ZF = 1, và ngược lại khi kết quả phép toán khác 0 => ZF = 0 
      • Cờ nhớ(CF - carry flag):Bật lên nếu mượn(hay nhớ) ở bit cao nhất(bit cao nhất là bit bên từ trái sang phải dãy số nhị phân) 
      • Cờ nhớ phụ/nhớ nữa(AF – auxiliary flag):Bật lên 1 nếu mượn ở bit 3 
      • Cờ chẵn lẻ( PF – parity flag ): Bật lên 1 nếu kết quả phép toán có tổng 8 bit thấp là 1 số chẵn 
      • Cờ tràn( OF – overflow flag ):Bật lên 1 khi kết quả phép toán có sự tràn số học

      6.    Thanh ghi điều khiển:

      Khái niệm:
      Được CPU sử dụng để điều khiển các hoạt động của bộ xử lý.
      dBao gồm:

      • Bộ đếm chương trình (Program count PC) 
      • Thanh ghi lệnh(Instruction register - IR ) 
      • Thanh ghi địa chỉ bộ nhớ (Memory address register – MAR) 
      • Thanh ghi bộ nhớ đệm(Memory buffer register - MBR)

      7.    Cơ chế đường ống (Pipelining)

      Khái niệm:
      Là 1 kỹ thuật thực hiện các lệnh theo kiểu gối  đầu nhằm tận dụng những khoảng thời gian rỗi giữa các công đoạn.
      3 vấn đề thường gặp với cơ chế đường ống:
            ·        Vấn đề xung đột tài nguyên(resource conflict)
      ·        Vấn đề tranh chấp dữ liệu (data hazard)
      ·        Vấn đề nảy sinh do các lệnh rẽ nhánh (branch instruction)
      5 Khâu :
            ·        IF(Instruction Fetch): Nhận lệnh
      ·        ID(Instruction Decode): Giải mã lệnh
      ·        DF(Data fetch/Operand fetch):Nhận dữ liệu/Lấy toán hạng
      ·        EX(Execution): Thực hiện lệnh
      ·        DS(Data save/Write back unit): Lưu kết quả      
      VD:S1->S5 tương ứng với 5 khâu.











      S1:
      1
      2
      3
      4
      5
      6
      7
      8
      9

      S2:

      1
      2
      3
      4
      5
      6
      7
      8

      S3:


      1
      2
      3
      4
      5
      6
      7
      S4:



      1
      2
      3
      4
      5
      6

      S5:




      1
      2
      3
      4
      5


      1
      2
      3
      4
      5
      6
      7
      8
      9


      Time->


      8.    Bộ nhớ cache

      Khái niệm:

      Bộ nhớ cache được thiết kế để kết hợp bộ nhớ có dung lượng nhỏ, tốc độ truy xuất nhanh đắt tiền với bộ nhớ có dung lượng lớn, tốc độ truy xuất chậm, ít đắt tiền.

       Phương pháp nâng cao khả năng hoạt động của CPU:

      ·        Tác động xung nhip (clock) bên trong bộ xử lý, tăng tần số clock trong CPU sẽ tăng tốc độ thực thi lệnh.
      ·        Sử dụng phương pháp cơ chế đường ống, cơ chế đường ống giúp giảm thời gian trung bình thực hiện từng lệnh và tăng đáng kể hiệu suất xử lý lệnh của CPU. Bộ xử lí gồm các phần tử xử lý độc lập, hoạt động như dây chuyền sản xuất.
      ·        Sử dụng lệnh thực hiện song song: Thực hiện nhiều lệnh trong một chu kì Clock
      ·        Bộ nhớ cache được thiết kế để kết hợp bộ nhớ có dung lượng nhỏ, tốc độ truy xuất nhanh, đắt tiền với bộ nhớ có dung lượng lớn, tốc độ truy xuất chậm, ít đắt tiền.
      Chương 3: Bộ nhớ

      9.    Clock

      Khái niệm:

      Một clock là một mạch điện tử mà nó phát ra một loạt các xung(pulse) với độ rộng xung nhất định và khoản thời gian giữa các xung liên tiếp là như nhau
      Xung nhịp để đồng bộ hóa sự thực hiện các thành phần trên mạch
      Thời gian chu kỳ xung nhịp là khoản thời gian giữa các cạnh hay cạnh xuống tương ứng của 2 xung liên tiếp nhau.
      * Vai trò:
      ·        Tăng tần số clock trong CPU (internal clock) sẽ tăng tốc độ thực thi lệnh.
      ·        Clock bên trong CPU được điều khiển bởi clock trên mainboard (external clock).
      ·         Tần số internal clock là bội số của tần số external clock.
      Các trạng thái của chu kỳ lệnh: Tính địa chỉ lệnh.,Lấy lệnh.,Giải mã thao tác lệnh.,Tính địa chỉ toán hạng.,Lấy toán hạng.,Thao tác dữ liệu,Lưu toán hạng.  

      Công thức


      End

      -----------------------------------------------------------------------

      13. Cấu trúc bộ xử lí :
      - Lấy lệnh (fetch instruction): Bộ xử lý đọc một lệnh từ bộ nhớ (thanh ghi, cache, bộ nhớ chính).
      - Thông  dịch  lệnh  (interpret  instruction): Lệnh  đã  lấy  được  giải  mã  để  xác  định hành động của nó.
      -  Lấy dữ liệu (fetch data): Sự thực thi của một lệnh có thể cần phải đọc dữ liệu từ bộ nhớ hay thiết bị nhập/xuất.
      -  Xử lý dữ liệu (process data): Sự thực thi của một lệnh có thể cần phải thực hiện phép toán số học hay luận lý nào đó trên dữ liệu.
      -  Ghi dữ liệu (write data): Kết quả của sự thực thi có thể cần ghi dữ liệu đến bộ nhớ hay thiết bị nhập/xuất.

      14. Tổ chức bộ nhớ:
      -Thành phần cơ bản của bộ nhớ  bán dẫn (semiconductor   memory) là các ô nhớ (memory cell).
      -Mỗi ô nhớ có một địa chỉ riêng biệt và là đơn vị hoạt động của bộ nhớ. Thông thường mỗi ô nhớ có dung lượng là 1 byte.
      - Có hai trạng thái (được biểu diễn bởi giátrị nhị phân là 1 và 0) : Có khả năng được ghi vào (thiết lập trạng thái), Có khả năng được đọc ra (nhận biết trạng thái).

      15. Bộ nhớ trong – Bit nhớ:
      - Bit nhớ được tạo từ Flip-flop D hoặc mạch cài/chốt D (D latch) là đơn vị cấu tạo bộ nhớ, chúng có khả năng nhớ 1 bit.
      - Muốn mạch nhớ nhiều bit, chúng ta mắc nối tiếp nhiều flip-flop, còn gọi là mạch  ghi  dịch (shift register).
      - Các  bit  đang  lưu  trữ  có  thể  dịch  chuyển sang phải hay sang trái khi có tín hiệu clock, nên mạch ghi dịch có nhiều ứng dụng quan trọng

      16. Bộ nhớ ảo (Virtual memory):
      -Kỹ thuật do hệ điều hành có hỗ trợ của phần cứng. Cho phép thực hiện chương trình lớn hơn bộ nhớ trong bằng cách sử dụng bộ nhớ ngoài.
      -Hoạt động dạng overlay tự động, bộ nhớ ảo bằng bộ nhớ trên đĩa.

      17. Phân trang:
      -Các địa chỉ mà chương trình có thể tham chiếu là không gian địa chỉ ảo (virtual address space) và các vị trí nhớ vật lý là không gian địa chỉ vật lý (physical address space).
      -Không gian địa chỉ ảo chia thành các trang (page),
      -Bộ nhớ được chia thành các khung trang (page frame), chứa được 1 trang.

      18. Số nguyên không dấu:
      -Sự biểu diễn dữ liệu trong máy tính được thể hiện bởi một chuỗi các giá trị nhị phân là 0 hay 1.

      19. Số nguyên có dấu:
      -Để biểu diễn số nguyên có dấu, bit bên trái nhất của dãy bit được sử dụng làm bit dấu: 0 là số dương, 1 là số âm.

      20. Định địa chỉ:
      - Định địa chỉ (addressing) là cách xác định đến các toán hạng của lệnh từ các vùng địa chỉ trên lệnh.
      -Toán hạng có thể là hằng  số, dữ liệu của thanh ghi hay bộ nhớ.
      -Các kỹ thuật (hay chế độ) định địa chỉ bao gồm:
      *Tức thời (Immediate): Toán hạng ở trên lệnh, trong vùng địa chỉ,//Không cần truy xuất bộ nhớ để lấy toán hạng//Tốc độ nhanh//Kích thước toán hạng bị giới hạn.

      *Trực tiếp (Direct): Vùng địa chỉ chứa địa chỉ toán hạng// Cần truy xuất bộ nhớ thêm 1 lần để có toán hạng// Không cần tính toán địa chỉ toán hạng// Không gian địa chỉ bị giới hạn

      *Gián tiếp (Indirect): Vùng địa chỉ chứa địa chỉ ô nhớ lưu địa chỉ toán hạng,//Cần truy xuất thêm bộ nhớ 2 lần(lần1: Có địa chỉ toán hạng, lần2: Có giá trị toán hạng) //Có thể gián tiếp nhiều cấp // Tốc độ chậm
      *Thanh ghi( register): Vùng địa chỉ chứa tên thanh ghi lưu toán hạng // Cần truy xuất thanh ghi để có toán hạng // Vùng địa chỉ nhỏ(lệnh ngắn hơn, lấy lệnh nhanh hơn)// Tốc độ nhanh // Số lượng thanh ghi giới hạn // Tương tự định vị địa chỉ trực tiếp.

      *Gián tiếp thanh ghi ( Indirect Register): Tương tự định vị địa chỉ gián tiếp // Vùng địa chỉ chứa tên thanh ghi, giá trị thanh ghi là địa chỉ ô nhớ lưu toán hạng // Cần truy xuất thanh ghi để có địa chỉ toán hạng và truy xuất bộ nhớ để có toán hạng.

      *Chỉ số (Indexed/Displacement): Vùng địa chỉ chứa 2 giá trị (Hằng số D, Thanh ghi R) -> địa chỉ toán hạng là (R) + D // Dùng để truy xuất vùng nhớ liên tục dạng ( Base + Displacement)
      *Stack:  Toán hạng được hiểu ngầm tại vị trí đỉnh stack // Có 2 loại lệnh truy xuất đỉnh stack (PUSH: đưa dữ liệu vào đỉnh stack, POP: lấy dữ liệu từ đỉnh stack