Bài giảng kiến trúc máy tính chương 2 Kiến trúc bộ lệnh

25 755 0
Bài giảng kiến trúc máy tính chương 2 Kiến trúc bộ lệnh

Đ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

Để ra lệnh cho máy tính ta phải nói với máy tính bằng ngôn ngữ của máy tính. Các từ của ngôn ngữ máy tính gọi là các lệnh (instructions) và tập hợp tất cả các từ gọi là bộ lệnh (instruction set).Bộ lệnh trong chương này là MIPS, một bộ lệnh của kiến trúc máy tính được thiết kế từ năm 1980. Cùng với 2 bộ lệnh thông dụng nhất ngày nay:ARM rất giống MIPSThe Intel x86,

12/09/2014 CE KIẾN TRÚC MÁY TÍNH – IT006.F11.KHTN CHƯƠNG KIẾN TRÚC BỘ LỆNH  Khoa Kỹ thuật máy tính  GV: TS Vũ Đức Lung  Email: lungvd@uit.edu.vn Chương 02 – Kiến trúc lệnh Mục tiêu chương: Hiểu cách biểu diễn lệnh máy tính, cách lệnh thực thi Chuyển đổi lệnh ngôn ngữ cấp cao sang assembly mã máy Chuyển đổi lệnh mã máy sang ngôn ngữ cấp cao Biết cách lập trình ngơn ngữ assembly cho MIPS 12/09/2014 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu khơng dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình Giới thiệu CE Để lệnh cho máy tính ta phải nói với máy tính ngơn ngữ máy tính Các từ ngơn ngữ máy tính gọi lệnh (instructions) tập hợp tất từ gọi lệnh (instruction set)  Bộ lệnh chương MIPS, lệnh kiến trúc máy tính thiết kế từ năm 1980 Cùng với lệnh thông dụng ngày nay:  ARM giống MIPS  The Intel x86, 12/09/2014 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu khơng dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình CE Phép tính (Operations) Ví dụ: add a, b, c  Chỉ dẫn cho máy tính thực cộng biến a với b ghi kết vào biến c, c= a + b Toán tử (operations) Toán hạng (operands) 12/09/2014 CE Ví dụ số lệnh MIPS Phép tính (Operations) Ví dụ Ví dụ C/Java f = (g + h) – (i + j); a = b + c; d = a – e; MIPS add a, b, c sub d, a, e C/Java add t0, g, h add t1, i, j sub f, t0, t1 MIPS 12/09/2014 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu khơng dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình Tốn hạng CE Có loại toán hạng: Toán hạng ghi (Register Operands) Toán hạng nhớ (Memory Operands) Toán hạng (Constant or Immediate Operands) 10 12/09/2014 CE Toán hạng Tốn hạng ghi:  Khơng giống chương trình ngơn ngữ cấp cao, tốn hạng lệnh số học bị hạn chế, chúng phải đặt vị trí đặc biệt xây dựng trực tiếp phần cứng gọi ghi (số lượng ghi có giới hạn: MIPS-32, ARM Cortex A8-40)  Kích thước ghi kiến ​trúc MIPS 32 bit; nhóm 32 bit xuất thường xuyên nên chúng đặt tên “từ” (word) kiến ​trúc MIPS (lưu ý: “từ” kiến trúc lệnh khác khơng có 32 bit)  Một khác biệt lớn biến ngơn ngữ lập trình biến ghi số giới hạn ghi, thường 32 máy tính 11 CE Tốn hạng Các ghi MIPS: 12 12/09/2014 Toán hạng CE Toán hạng nhớ (1):  Bộ vi xử lý giữ lượng nhỏ liệu ghi, nhớ máy tính chứa hàng triệu liệu  Với lệnh MIPS, phép tính số học xảy ghi, đó, MIPS phải có lệnh chuyển liệu nhớ ghi Lệnh gọi lệnh chuyển liệu Lệnh chuyển liệu: Một lệnh di chuyển liệu nhớ ghi  Để truy cập vào từ nhớ, lệnh phải cung cấp địa nhớ Địa chỉ: Một giá trị sử dụng để phân định vị trí phần tử liệu cụ thể mảng nhớ 13 CE Toán hạng Toán hạng nhớ (2):  Bộ nhớ mảng đơn chiều lớn, với địa đóng vai trị số mảng đó, Ví dụ, hình 2, địa phần tử thứ ba 2, giá trị nhớ [2] 10 Hình 2: Địa nhớ nội dung nhớ địa Đây đơn giản hóa địa MIPS; Hình cho thấy địa MIPS thực tế cho địa từ nhớ Hình 3: Địa nhớ MIPS thực tế nội dung nhớ cho từ Các địa thay đổi đánh dấu xanh để tương phản với Hình Từ địa MIPS byte, địa từ bội bốn: có bốn byte từ 14 12/09/2014 Toán hạng CE Toán hạng nhớ (3):  Lệnh chuyển liệu từ nhớ vào ghi gọi load (viết tắt lw-load word) Định dạng lệnh nạp: lw $s1,20($s2) offset Địa sở ghi • $s1: ghi nạp liệu vào • Một số (20) ghi ($s2) sử dụng để truy cập vào nhớ Tổng số số nội dung ghi thứ hai địa nhớ phần tử cần truy cập đến 15 CE Tốn hạng Tốn hạng nhớ (4): Ví dụ lệnh nạp: Giả sử A mảng 100 từ trình biên dịch kết hợp biến g h với ghi $s1 $s2 trước Giả định địa bắt đầu mảng A (hay địa sở) chứa $s3 Hãy biên dịch đoạn lệnh ngôn ngữ C sau: g = h + A[8];  Biên dịch: lw $t0, 8($s3) # $t0 nhận A[8] add $s1,$s2,$t0 Thực tế MIPS, từ bytes lw $ t0, 32($s3) # g = h + A[8]  Hằng số lệnh truyền liệu (8) gọi offset, ghi thêm vào để tạo thành địa ($s3) gọi ghi sở 16 12/09/2014 Toán hạng CE Toán hạng nhớ (5):  Qui định xếp: - Trong MIPS, từ phải địa bội số Yêu cầu gọi Qui định xếp (alignment restriction), nhiều kiến ​trúc có (giúp việc truyền liệu nhanh hơn) - Máy tính phân chia thành đánh số byte từ từ trái sang phải (leftmost hay “big en”) so với đánh số byte từ từ phải sang trái (rightmost hay “litle end”) MIPS thuộc dạng Big Endian 17 CE Toán hạng Toán hạng nhớ (6):  Lệnh lưu (sw - Store Word) liệu từ ghi vào nhớ Định dạng lệnh lưu là: sw $s1,20($s2) offset Địa sở ghi sở • $s1: ghi chứa liệu cần lưu • Một số (20) ghi ($s2) sử dụng để truy cập vào nhớ 18 12/09/2014 Toán hạng CE Toán hạng nhớ (7): Ví dụ lệnh sw: Giả sử biến h kết nối với ghi $s2 địa sở mảng A $s3 Biên dịch câu lệnh C thực sang MIPS? A[12] = h + A[8]; Biên dịch: lw $t0,32($s3) # $t0 = A[8] add $t0,$s2,$t0 # $t0 = h + A[8] sw $t0,48($s3) # A[12] = $t0 19 CE Toán hạng Toán hạng hằng: Nhiều chương trình sử dụng số phép tốn Ví dụ: addi $s3, $s3, # $s3 = $s3 + Toán hạng Lưu ý:  Mặc dù ghi MIPS xem xét 32 bit, có phiên 64-bit lệnh MIPS thiết lập với ghi 64-bit Để giữ phiên cũ, chúng thức gọi MIPS-32 MIPS-64 (ta quan tâm tập hợp MIPS-32) Từ MIPS hỗ trợ số âm, khơng có nhu cầu trừ MIPS 20 10 12/09/2014 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu khơng dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình 21 CE Số có dấu không dấu  Con người dạy để suy nghĩ hệ số 10, số biểu diễn số Ví dụ, 123 số 10 = 1.111.011 số  Con số giữ phần cứng máy tính loạt tín hiệu điện cao thấp chúng coi hệ số Ví dụ: Hình vẽ cho thấy số bit từ MIPS vị trí số 1011: Từ MIPS có 32 bit độ dài, biểu diễn số từ đến 232-1 (4.294.967.295)  Bit nhỏ nhất: Bit bên phải từ MIPS (bit 0) Bit lớn nhất: Bit bên trái từ MIPS (bit 31) 22 11 12/09/2014 Số có dấu khơng dấu CE Số dương âm máy tính: Sử dụng bù biểu diễn Số '0 'có nghĩa dương, số '1' có nghĩa âm 23 CE Số có dấu không dấu Nửa phần dương số, từ đến 2,147,483,647ten (231 – 1), biểu diễn thường Phần số âm biểu diễn: 1000…0000two = -2,147,483,648ten 1000…0001two = -2,147,483,647ten 1111…1111two = -1ten Bit thứ 32 gọi bit dấu Chúng biểu diễn số dương âm 32-bit điều kiện bit giá trị lũy thừa Bù hai có số âm -2,147,483,648ten , mà khơng có số dương tương ứng Mỗi máy tính ngày sử dụng bù hai để biểu diễn nhị phân cho số có dấu Một cách tính giá trị số khơng cần đổi sang bù số âm: Lưu ý: Bit dấu nhân với -231, phần lại bit sau nhân với số dương giá trị số tương ứng chúng 24 12 12/09/2014 CE Số có dấu khơng dấu Ví dụ: đổi từ hệ sang hệ 10 Trả lời: 25 CE Số có dấu khơng dấu Mở rộng số có dấu: Làm để chuyển đổi số nhị phân biểu diễn n bit thành số biểu diễn với nhiều n bit? Ví dụ: Chuyển đổi số nhị phân 16-bit số 2ten -2ten thành số nhị phân 32-bit 2ten: -2ten: 26 13 12/09/2014 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu khơng dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình 27 CE Biểu diễn lệnh  Làm lệnh (add $t0, $s1, $s2) lưu giữ máy tính? Máy tính làm việc với tín hiệu điện tử thấp cao, lệnh lưu giữ máy tính phải biểu diễn chuỗi "0" "1", gọi mã máy/ lệnh máy  Ngôn ngữ máy: biểu diễn nhị phân sử dụng để giao tiếp hệ thống máy tính Để chuyển đổi từ lệnh sang mã máy, sử dụng định dạng lệnh Định dạng lệnh: Một hình thức biểu diễn lệnh bao gồm trường số nhị phân Ví dụ định dạng lệnh: 28 14 12/09/2014 CE Biểu diễn lệnh  Ví dụ: Chuyển đổi lệnh MIPS cộng thành lệnh máy: add $t0,$s1,$s2 Với định dạng lệnh: 29 CE Biểu diễn lệnh  Trả lời: Chuyển đổi lệnh MIPS cộng thành lệnh máy: add $t0,$s1,$s2 Với định dạng lệnh: Tra bảng MIPS reference data để có giá trị cần thiết  Trong ngôn ngữ assembly MIPS, ghi $s0 đến $s7 tương ứng vào ghi 16 đến 23, ghi $t0 đến $t7 tương ứng vào ghi đến 15  Mỗi phân đoạn định dạng lệnh gọi trường  Các trường cuối (add có phần opcode Function tương ứng với 0/20hex) kết hợp báo cho máy tính lệnh MIPS thực phép cộng  Trường thứ hai cho biết số ghi tốn hạng nguồn phép toán cộng ($s1 ghi số 17)  Trường thứ ba cung cấp cho toán hạng nguồn khác cho phép cộng ($s2 ghi số 18)  Trường thứ tư ghi đích để nhận tổng ($t0 ghi số 8)  Trường thứ năm không sử dụng lệnh này, thiết lập 30 15 12/09/2014 CE Biểu diễn lệnh Các dạng khác định dạng lệnh MIPS :  R-type(cho ghi) or R-format  I-type (cho tức thời) I-format sử dụng lệnh truyền liệu trực tiếp (tức thời)  J-type (lệnh nhảy, lệnh định) J-format 31 CE Biểu diễn lệnh Trường MIPS R-format: Các trường MIPS đặt tên để làm cho chúng dễ nhớ hơn:  op: theo truyền thống gọi mã tác vụ Opcode: Trường biểu thị phép toán định dạng lệnh  rs: Thanh ghi toán hạng nguồn  rt: Thanh ghi thứ hai toán hạng nguồn  rd: Thanh ghi tốn hạng đích Nó nhận kết phép toán  shamt: số lượng bit dịch chuyển dùng câu lệnh dịch bit (shift) (không sử dụng chứa 0.)  funct: Chức Lĩnh vực lựa chọn phiên cụ thể hoạt động lĩnh vực op gọi mã chức 32 16 12/09/2014 Biểu diễn lệnh CE Trường MIPS I-format: Địa 16-bit có nghĩa lệnh truy cập đến địa giá trị ghi rs cộng với số 16 bit 33 CE Biểu diễn lệnh Hình sau: cho thấy trường cho vài lệnh MIPS Fig.6 MIPS instruction encoding  “reg” nghĩa số ghi 31  “address” nghĩa địa 16-bit  “n.a.” (không áp dụng) nghĩa trường không xuất định dạng  Lưu ý lệnh "cộng" "trừ" có giá trị trường "op"; phần cứng sử dụng trường "funct" để định biến thể phép toán: "cộng" (32) "trừ" (34) 34 17 12/09/2014 Biểu diễn lệnh CE  Ví dụ: Chuyển ngơn ngữ cấp caoasemblymã máy: Nếu $t1 chứa địa sở mảng A $s2 tương ứng với h, câu lệnh gán: A[300] = h + A[300]; Được chuyển thành: lw $t0,1200($t1) # Tạm thời reg $t0 nhận A[300] add $t0,$s2,$t0 # Tạm thời reg $t0 nhận h + A[300] sw $t0,1200($t1) # Lưu h + A[300] trở lại vào A[300] Mã máy ngôn ngữ MIPS cho ba lệnh trên: 35 Biểu diễn lệnh CE Kết luận: Các lệnh biểu diễn số Chương trình lưu trữ nhớ đọc hay viết giống số  Xem lệnh liệu cách tốt để đơn giản hóa nhớ phần mềm máy tính  Để thực chương trình, bạn cần nạp chương trình liệu vào nhớ sau báo với máy tính để bắt đầu thực vị trí định nhớ 36 18 12/09/2014 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu khơng dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình 37 Các phép tính Logic CE Hình 7: C Java phép tính logic lệnh MIPS tương ứng  Shift: Lệnh dịch chuyển bit  AND: phép toán logic “VÀ”  OR: phép toán logic “HOẶC”  NOT: kết bit ngược lại  NOR: NOT OR  Hằng số hữu ích phép tốn logic AND OR phép tính số học, MIPS cung cấp lệnh trực tiếp andi ori 38 19 12/09/2014 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu khơng dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình 39 CE Các lệnh điều kiện nhảy  Một máy tính (PC) khác với máy tính tay (calculator) dựa khả đưa định  Trong ngôn ngữ lập trình, đưa định thường biểu diễn cách sử dụng câu lệnh “if”, kết hợp với câu lệnh “go to”  Ngôn ngữ Assembly MIPS bao gồm hai lệnh định, tương tự với câu lệnh "if" “go to" Ví dụ: beq register1, register2, L1 Lệnh có nghĩa đến câu lệnh có nhãn L1 giá trị ghi ghi Từ beq viết tắt “branch if equal” (rẽ nhánh bằng)  Các lệnh gọi lệnh rẽ nhánh có điều kiện 40 20 12/09/2014 Các lệnh điều kiện nhảy CE Các lệnh rẽ nhánh có điều kiện MIPS: 41 Các lệnh điều kiện nhảy CE  Biên dịch if-then-else thành nhánh có điều kiện: Trong đoạn mã sau f, g, h, i j biến Nếu năm biến f đến j tương ứng với ghi $s0 đến $s4, mã MIPS biên dịch cho câu lệnh if gì? if (i == j) f = g + h; else f = g – h;  Trả lời: bne $s3,$s4,Else # go to Else if i != j add $s0, $s1, $s2 # f = g + h (skipped if i != j) j exit # go to Exit Else: sub $s0, $s1, $s2 # f = g – h (skipped if i = j) exit: 42 21 12/09/2014 Các lệnh điều kiện nhảy CE  Biên dịch vòng lặp while C Đây vòng lặp truyền thống C: while (save[i] == k) i += 1; Giả định i k tương ứng với ghi $s3 $s5 địa sở mảng save lưu $s6 Mã assembly MIPS tương ứng với đoạn mã C gì?  Trả lời: Loop: sll $t1,$s3,2 # Temp reg $t1 = * i add $t1,$t1,$s6 # $t1 = address of save[i] lw $t0,0($t1) # Temp reg $t0 = save[i] bne $t0,$s5, Exit # go to Exit if save[i] != k addi $s3,$s3,1 #i=i+1 j Loop # go to Loop Exit: 43 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu khơng dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình 44 22 12/09/2014 CE Chuyển đổi bắt đầu chương trình Phần mơ tả bốn bước việc chuyển đổi chương trình C tập tin đĩa vào chương trình chạy máy tính Hình 12: Một hệ thống phân cấp chuyển đổi cho ngôn ngữ C CE 45 Câu hỏi tập chương  Chuyển mã assembly MIPS sang dạng mã máy MIPS  Chuyển dạng mã máy MIPS sang dạng mã assembly MIPS  Chuyển dạng mã ngôn ngữ cấp cao sang dạng mã assembly MIPS ngược lại 46 23 12/09/2014 CE Chuyển mã assembly MIPS sang dạng mã máy MIPS  add $t0, $s1, $s2  sub $s0, $s2, $s3  sll $s2, $s4, 12  addi $t0, $t0, -1  lw $s1, 32($s0)  sw $a0, 16($t0)  beq $t0, $0, 50 47 CE Chuyển dạng mã máy MIPS sang dạng mã assembly MIPS  00001025hex  0005402Ahex  11000003hex  00441020hex  20A5FFFFhex  08100001hex 48 or $2,$0,$0 slt $8,$0,$5 beq $8,$0,3 add $2,$2,$4 addi $5,$5,-1 j 0x100001 24 12/09/2014 Bài tập CE  Chuyển dạng mã ngôn ngữ cấp cao sang dạng mã assembly MIPS a=b*c+3 a=b*8–a a = – b – c + 120 f = g + h + B[4]; //f,g,h  $s0, $s1, $s2 // địa mảng B $s6 49 CE Chuyển mã assembly MIPS sang dạng mã máy MIPS add $t0,$s1,$s2  Xác định loại lệnh – Thanh ghi: add, sub, or, … – Giá trị tức thời: lw, sw, addi, subi, …  addi $t2, $t2, 25 ... lệnh cho máy tính ta phải nói với máy tính ngơn ngữ máy tính Các từ ngơn ngữ máy tính gọi lệnh (instructions) tập hợp tất từ gọi lệnh (instruction set)  Bộ lệnh chương MIPS, lệnh kiến trúc máy. .. thành số nhị phân 32- bit 2ten: -2ten: 26 13 12/ 09 /20 14 CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu không dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện... CE Chương 02 – Kiến trúc lệnh Giới thiệu Các phép tính Tốn hạng Số có dấu không dấu Biểu diễn lệnh Các phép tính Logic Các lệnh điều kiện nhảy Chuyển đổi bắt đầu chương trình 44 22 12/ 09 /20 14

Ngày đăng: 18/10/2014, 16:24

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan