Hi quest ,  welcome  |  sign in  |  registered now  |  need help ?

About

Blogger templates

Hướng dẫn học MIPS


Tổng quan về bộ lệnh MIPS


Phần I: GIỚI THIỆU
    Bộ lệnh MIPS là gì? Tại sao lại phải sử dụng bộ lệnh MIPS? Chương trình nào giả lập thực thi kiến trúc lệnh MIPS? Cấu trúc chương trình, kiến trúc bộ lệnh của MIPS ra sao? Sau khi đọc xong bài này bạn sẽ nắm được phần căn bản nhất về bộ lệnh MIPS, từ đó làm nền tảng cho việc nghiên cứu sâu hơn về MIPS.
    MIPS (Microprocessor without Interlocked Pipeline Stages) là một loại hợp ngữ . Đây là kiến trúc bộ lệnh dành cho hệ thống nhúng (Embedded System). Ví dụ như R2000, R3000, R6000 của  MIPS32. MIPS có nhiều phiên bản như: MIPS I, MIPS II, MIPS III, MIPS IV, MIPS V, MIPS32 và MIPS64.
    Như ta đã biết, các bộ xử lí sẽ chỉ xử lí được tập các lệnh thuộc về kiến trúc bộ lệnh của nó (tức là các lệnh đã được định sẵng trong bộ xử lí đó). Vì thế các hệ thống nhúng và một số loại siêu máy tính thuộc về kiến trúc bộ lệnh MIPS thì chỉ có thể thực hiện các chương trình thuộc kiến trúc bộ lệnh này (tức là chỉ thực thi được các chương trình viết bằng bộ lệnh MIPS) . Và đó cũng chính là lí do mà chúng ta phải học MIPS.
Phần II: KIẾN TRÚC LỆNH MIPS.
    1. Các thanh ghi.
  • Thanh ghi đa năng: 32 thanh.
  • SốTênÝ nghĩa
    $0$zeroHằng số 0
    $1$atAssembler Temporary
    $2 -> $3$v0 -> $v1Giá trị trả về của hàm hoặc biểu thức
    $4 -> $7$a0 -> $a3Các tham số của hàm
    $8 -> $15$t0 -> $t7Thanh ghi tạm (không giữ giá trị trong quá trình gọi hàm)
    $16 -> $23$s0 -> $s7Thanh ghi lưu trữ (giữ giá trị trong suốt quá trình gọi hàm)
    $24 -> $25$t8 -> $t9Thanh ghi tạm
    $26 -> 27$k0 -> $k1Dự trữ cho nhân HĐH
    $28$gpCon trỏ toàn cục (global pointer)
    $29$spCon trỏ Stack
    $30$fpCon trỏ Frame
    $31$raĐịa chỉ trả về
  • Thanh ghi dấu phẩy động: 32 thanh, có tên từ $f0 -> $f31.
  • Thanh ghi HI và LO: Thao tác nhân của MIPS có kết quả chứa trong 2 thanh ghi HI và LO. Bit 0-31 thuộc LO và 32-63 thuộc HI.
    Đặc điểm:
      - Đóng vai trò như các biến trong ngôn ngữ lập trình cấp cao. Tuy nhiên, chúng khác với biến ở chỗ: trong khi biến chỉ lưu trữ đúng kiểu dữ được khai báo trước, còn thanh ghi thì không phân biệt kiểu dữ liệu (chúng đơn thuần chỉ là một dãy bit). - Đây là phần cứng nên số lượng của chúng là có hạn. Tuy nhiên, tốc độ xử lí là rất cao.
Lưu ý:
    Khi sử dụng các thanh ghi, để tránh lỗi không nên có phát sinh, nên sử dụng đúng chức năng của chúng.
    2. Kiến trúc bộ lệnh.
    Kiến trúc bộ lệnh bao gồm 3 loại cấu trúc: R-Format, I-Fomat và J-Format. a. Cấu trúc R-Format
    012345678910111213141516171819202122232425262728293031
    opcodersrtrdshamtfunct
    655556
    Trong đó:
      opcodeCho biết đây là thao tác gì.funct: Kết hợp với trường opcode để xác định cần làm gì.
        Ví dụ: Khi trường opcode cho biết đây là lệnh dịch bit thì bộ xử lí sẽ nhìn vào trường funct để biết đây là dịch bíttrái hay dịch bit phải.
      shamtTrường này chỉ được sử dụng khi thực hiện lệnh dịch bit. Nó chứa số bit cần dịch. rs(Source Register): Chứa địa chỉ thanh ghi nguồn thứ nhất. rt(Target Register): Chứa địa chỉ thanh ghi nguồn thứ hai. rd(Destination Register): Chứa địa chỉ thanh ghi đích. 
       
      Lưu ý: mỗi trường rs, rt, rd có 5 bit, chứa vừa đủ số từ 0 -> 31 biểu diễn được địa chỉ của 32 thanh ghi.
    b. Cấu trúc I-Format
    012345678910111213141516171819202122232425262728293031
    opcodersrtimediate
    65516
    Trong đó:
      opcodeCho biết đây là thao tác gì. rs và rtChứa địa chỉ các thanh ghi cần so sánh. imediateTên của nhãn cần nhảy tới. 2^16 => có thể nhảy được 0 -> 65,534
    c. Cấu trúc J-Format
    012345678910111213141516171819202122232425262728293031
    opcodetarget address
    626
    Trong đó:
      opcodeCho biết đây là thao tác gì. target addressChứa địa chỉ cần nhảy tới.
    Với 26 bit của trường target address thì các lệnh nhảy có thể nhảy được 2^26 từ nhớ. Tuy nhu cầu nhảy đến các địa chỉ khác là không nhất thiết là cần nhưng cũng được hỗ trợ bởi lệnh nhảy jr.


Dưới đây là 2 giáo trình về cấu trúc máy tính & hợp ngữ và một vài tài liệu sưu tầm trên Internet. Các bạn có thể xem thêm cho những phần bài giảng của thầy chưa được rõ.
1.Hai giáo trình của thầy Mạnh :  Tại Đây2.Giáo trình Bảng Karnaught :  Tại Đây
3.Bài giảng hợp ngữ: Tại Đây.


Tham khảo giáo trình Cấu trúc máy tính và hợp ngữ của Trường ĐH KHTN TP.HCM Thầy Phạm Tuấn Sơn

0 nhận xét:

Đăng nhận xét