Giáo trình kiến trúc máy tính I - Chương 6

41 9 0
Giáo trình kiến trúc máy tính I - Chương 6

Đ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

Tài liệu tham khảo Giáo trình kiến trúc máy tính I gồm 7 chương trình bày các vấn đề chung nhất, các thành phần cơ bản nhất cấu thành nên máy tính hiện đại nhằm trang bị cho sinh viên các nội dung chủ yếu - Chương 6 Kiến trúc bộ lệnh

Chương VI: Kiến trúc lệnh Chương VI: Kiến trúc lệnh Trong chương tập trung vào kiến trúc lệnh máy tính, giới thiệu trường hợp khác kiểu kiến trúc lệnh ðặc biệt chương tập trung vào bốn chủ đề ðầu tiên phân loại kiểu kiến trúc lệnh ñánh giá ưu khuyết ñiểm chúng 6.1 Phân loại kiến trúc lệnh Có ba loại kiến trúc lệnh bản: kiến trúc ngăn xếp (stack), kiến trúc ghi tích lũy (Accumulator) kiến trúc ghi đa dụng GPRA(general-purpose register architecture) Trong kiến trúc GPRA lại chia làm hai loại thông dụng ghi – nhớ (register-memory) nạp-lưu (load-store) Ví dụ phép tính C = A + B ñược dùng kiểu kiến trúc hình 6.1 Hình 6.1 Thực lệnh C = A + B cho kiểu kiến trúc lệnh Trong câu lệnh có tốn hạng, mà tốn hạng lại chia thành hai loại: ẩn (implicitly) (explicitly): Toán hạng kiến trúc ngăn xếp loại ẩn ñầu ngăn xếp, kiến trúc ghi tích lũy có tốn hạng ẩn accumulator, cịn kiến trúc GPRA dùng tốn hạng hiện, ghi nhớ Toán hạng dạng truy cập trực tiếp từ nhờ ñầu tiên ñược nạp vào ghi tạm thời ñó phụ thuộc vào kiểu kiến trúc lệnh ñặc trưng http://www.ebook.edu.vn 150 Chương VI: Kiến trúc lệnh Kiến trúc GPRA có loại truy cập trực tiếp vào nhớ (register-memory); loại truy cập vào nhớ phải nạp thông qua register gọi kiến trúc nạp-lưu (loadstore) hay kiến trúc ghi (register-register); ngồi cịn kiểu kiến trúc GPRA kiến trúc nhớ-bộ nhớ (memory-memory), kiểu khơng cịn thấy ngồi thị trường ngày Những máy tính đời trước thường dùng kiểu kiến trúc ngăn xếp kiến trúc ghi tích lũy, từ sau năm 1980 dùng kiến trúc GPR Hiện nhà sản xuất máy tính có khuynh hướng dùng kiến trúc phần mềm ghi đa dụng việc thâm nhập ghi ña dụng nhanh thâm nhập nhớ trong, chương trình dịch dùng ghi đa dụng có hiệu Bảng 6.1 cho ta thấy ưu nhược ñiểm ba loại kiến trúc Như kiểu kiến trúc GPR ñược dùng ngày yếu tố sau: – Dùng ghi, dạng lưu trữ CPU có tốc độ nhanh nhớ ngồi – Dùng ghi dễ dàng cho trình biên dịch dùng hiệu nhớ ngồi Ví dụ biểu thức (A*B) + (C*D) – (E*F) tính cách nhân phần ngoặc thứ tự, ứng dụng kỹ thuật pipeline, kỹ thuật làm cho giai ñoạn khác nhiều lệnh ñược thi hành lúc => hiệu Trong kiến trúc stack biểu thức tính từ trái sang phải – Có thể dùng ghi để lưu biến giảm thâm nhập ñến nhớ => chương trình nhanh Tuy nhiên lệnh ñều dùng ghi ghi ñủ? câu trả lời phụ thuộc vào việc ghi sử dụng trình biên dịch Phần lớn trinh biên dịch http://www.ebook.edu.vn 151 Chương VI: Kiến trúc lệnh dành riêng vài ghi cho tính tốn biểu thức, dùng vài ghi để chuyển thơng số cần thiết cho phép ghi lại lưu trữ biến cần thiết Loại kiến trúc Ngăn xếp (Stack) Thanh ghi tích luỹ (Accumulator Register) Ưu điểm Nhược điểm - Lệnh ngắn - Ít mã máy - Làm tối thiểu trạng thái bên máy tính - Dễ dàng tạo biên dịch ñơn giản cho kiến trúc ngăn xếp - Thâm nhập ngăn xếp không ngẫu nhiên - Mã khơng hiệu - Khó dùng xử lý song song ống dẫn - Khó tạo biên dịch tối ưu - Lưu giữ ghi tích luỹ tạm thời - Nghẽn ghi tích luỹ - Khó dùng xử lý song song ống dẫn - Trao ñổi nhiều với nhớ - Lệnh dài - Số lượng ghi bị giới hạn - Lệnh ngắn - Làm tối thiểu trạng thái bên máy tính (yêu cầu mạch chức năng) - Thiết kế dễ dàng - Tốc ñộ xử lý nhanh, ñịnh vị ñơn giản - Ít thâm nhập nhớ - Kiểu tổng quát ñể tạo mã hữu hiệu Bảng 6.1 So sánh kiểu kiến trúc lệnh Thanh ghi ña dụng (General Register) http://www.ebook.edu.vn 152 Chương VI: Kiến trúc lệnh Kiểu kiến trúc ghi ña dụng Do kiểu kiến trúc ghi đa dụng chiếm vị trí hàng ñầu nên phần sau, ta ñề cập ñến kiểu kiến trúc ðối với lệnh tính tốn logic điển hình (lệnh ALU), có ñiểm cần nêu: – Trước tiên, lệnh ALU phải có tốn hạng Nếu lệnh có tốn hạng tốn hạng chứa kết phép tính hai tốn hạng (Ví dụ: ADD A, B, C) Nếu lệnh có tốn hạng hai tốn hạng phải vừa tốn hạng nguồn, vừa tốn hạng đích (Ví dụ: ADD A, B) – Thứ hai, số lượng toán hạng nhớ có lệnh Số tốn hạng nhớ thay đổi từ tới Như ñã nêu trên, nhiều cách tổ hợp có loại tốn hạng lệnh ALU, máy tính chọn kiểu sau : o ghi-thanh ghi (kiểu cịn gọi nạp - lưu trữ), o ghi - nhớ o nhớ - nhớ Kiểu ghi - ghi nhiều nhà chế tạo máy tính lưu ý với lý do: việc tạo mã máy ñơn giản, chiều dài mã máy cố ñịnh số chu kỳ xung nhịp cần thiết cho việc thực lệnh cố định, thâm nhập nhớ Tuy nhiên, kiểu kiến trúc có vài hạn chế như: số lượng ghi bị giới hạn, việc ghi có độ dài dẫn đến khơng hiệu lệnh xử lý chuối lệnh có cấu trúc Việc lưu phục hồi trạng thái có lời gọi thủ tục hay chuyển ñổi ngữ cảnh http://www.ebook.edu.vn 153 Chương VI: Kiến trúc lệnh 6.2 ðịa nhớ Trong kiến trúc lệnh phải đề cập đến tốn hạng, mà số tốn hạng lưu nhớ Vậy cách tổ chức ñịa nhớ ñiều cần biết trước ñi vào nghiên cứu lệnh Bộ nhớ (memory) thành phần lưu trữ chương trình liệu máy tính mà chương ñã biết Bit ðơn vị nhớ Ngoài ñã biết bit ñược tạo flip-flop Nhưng cách bố trí nhớ nhớ chung nào? thứ tự xếp chúng sao? ñiều cần biết phần ðịa nhớ - Bộ nhớ gồm số (hoặc vị trí), (cell) chứa mẩu thơng tin Mỗi gắn số gọi ñịa (address), qua chương trình tham chiếu Giả sử nhớ có n ơ, chúng có địa chi từ đến n-1 Tất nhớ chứa số bit Trong trường hợp có k bit có khả chứa số 2k tổ hợp bit khác Trong nhớ kế cận có địa liên tiếp Ơ đơn vị lập ñịa nhỏ hãng khác dùng qui định số bit cho loại máy tính khác IBM PC bit/ô, DEC PDP-8 12bit/ô, IBM 1130 16 bit/ô,…Tuy nhiên năm gần ñây, ña số nhà sản xuất máy tính dùng chuẩn hóa bit, gọi byte Byte nhóm lại thành từ (word) máy tính với từ 16 bit có byte/từ, cịn máy tính với 32 bit có byte/từ Hầu hết lệnh thực trêntồn từ Vì máy tính 16 bit có ghi 16 bit lệnh thao tác từ 16 bit, cịn máy 32 bit có ghi 32 bit lệnh thao tác từ 32 bit http://www.ebook.edu.vn 154 Chương VI: Kiến trúc lệnh Sắp xếp thứ tự byte Có hai cách xếp thứ tự byte từ, ñánh số byte từ từ trái sang phải ñánh số byte từ từ phải sang trái Hình 6.2(a) cho thấy thứ tự byte nhớ máy tính 32 bịt có số byte đánh số từ trái sang phải, họ Motorola chẳng hạn Hình 6.2(b) minh họa tương tự máy tính 32 bit, đánh số từ phải sang trái, ví dụ họ Intel Hệ thống trước bắt ñầu ñánh số từ ñầu lớn gọi máy tính đầu lớn (Big endian), trái ngược với đầu nhỏ (little endian) Hình 6.2 (a) Bộ nhớ ñầu lớn (họ Motorola), (b) Bộ nhớ ñầu nhỏ (họ Intel) Cần biết hệ thống ñầu lớn lẫn ñầu nhỏ, số nguyên 32 bit với trị số ñược biểu diễn bit 110 bit bên góc phải từ 29 bit bên góc trái Trong lược đồ đấu lớn, bit nằm byte ñầu tiên bên phải, byte (hoặc 7,11,…), lược ñồ ñầu nhỏ, chúng byte (hoặc 4,8,…) Trong hai trường hợp, từ chứa số nguyên có ñịa ðiểm khác biệt bên máy tính khơng có vấn đề gì, kết nối chúng vào mạng trao đổi thơng tin với gặp nhiều vấn ñề trục trặc http://www.ebook.edu.vn 155 Chương VI: Kiến trúc lệnh 6.3 Mã hóa tập lệnh Một chương trình bao gồm dãy lệnh (hay gọi thị), lệnh rõ việc làm cụ thể máy tính thực phép cộng, thực nhập liệu, thực ñọc liệu từ nhớ,… Như ñã thấy trên, câu lệnh gồm có nhiều phần Trong ñó tác vụ thực lệnh ñược rõ trường gọi mã phép toán (operation code) hay mã tác vụ ñược gọi tắt opcode, cho biết hành ñộng ñược thi hành (từ ñây trở ñi ta dùng cụm từ mã tác vụ) Trong lệnh cịn thực ghi hay địa (address) nhớ, nơi chứa đựng liệu cần xử lý Trong hình 6.3 cho ta trường hợp mã hóa lệnh đơn giản số khn dạng điển hình lệnh Trường hợp thứ có mã tác tụ mà khơng có phần địa Trường hợp thứ hai mã lệnh có phần, phần tác vụ lệnh địa trường hợp thú (c) phần ñịa chiếm vùng mã lệnh Opcode (a) Opcode ðịa (b) Opcode ðịa ðịa Hình 6.3 Một vài dạng mã lệnh Tùy thuộc vào kiến trúc máy tính, loại máy tính mã lệnh có chiều dài khác Trên số máy tính tất lệnh có độ dài (Power PC, SPARC, MIPS), số máy khác lại có hai ba ñộ dài khác (IBM 360/70, Intel 80x86), chí độ dài mã lệnh thay đổi tùy ý (VAX) Ngồi lệnh ngắn hơn, dài với ñộ dài từ http://www.ebook.edu.vn 156 Chương VI: Kiến trúc lệnh 6.3.1 Các tiêu chuẩn thiết kế dạng thức lệnh Vì có nhiều dạng khác lệnh, thiết kế máy tính cần có tiêu chí rõ ràng ñể lựa chọn dạng thức lệnh cho máy cần thiết kế Một số tiêu chí nhà thiết kế ñưa sau: Tiêu chuẩn thiết kế 1: Mã lệnh ngắn ưu việt mã lệnh dài ðây tiêu chuẩn ñầu tiên quan trọng Một chương trình gồm n lệnh 16 bit chiếm chừng nửa không gian nhớ so với n lệnh 32 bit Suy cho cùng, nhớ khơng miễn phí, nhà thiết kế khơng thích lãng phí Ngồi nhớ có tốc độ truyền cụ thế, ñịnh qua công nghệ thiết kế kỹ thuật Nếu tốc ñộ truyền nhớ T bit/giây (bps - bit per second) chiều dài lệnh trung bình L truyền nhiều T/L lệnh giây Vì vậy, tốc thi hành lệnh (tức tốc ñộ xử lý) tùy thuộc vào ñộ dài lệnh Lệnh ngắn ñồng nghĩa với xử lý nhanh Nếu thời gian thi hành lệnh q lâu so với thời gian tìm nạp từ nhớ, thời gian tìm nạp lệnh khơng quan trọng Nhưng với CPU nhanh, nhớ thường nút cổ chai Bởi vậy, tăng số lệnh tìm nạp giây tiêu chuẩn thiết kế quan trọng Tiêu chuẩn thiết kế thứ 2: Dộ dài mã lệnh ñủ ñế biểu diễn tất phép toán mong muốn Nếu cần thiết kế máy tính với 2n thao tác hay vi tác vụ, ta khơng thể dùng mã hóa lệnh với độ dài nhỏ n ðơn giản khơng đủ chỗ opcode ñế cho biết lệnh hay mã hóa tất lệnh Tiêu chuẩn thiết kê thứ 3: ñộ dài word máy bội số nguyên ñộ dài ký tự Trong trường hợp mà ký tự có k bit, độ dài từ phải k, 2k, 3k, 4k,… cịn khơng lãng phí khơng gian lưu trữ từ http://www.ebook.edu.vn 157 Chương VI: Kiến trúc lệnh Tất nhiên lưu trữ 3.5 ký tự word, song việc làm việc gây tình trạng hiệu nghiêm trọng truy cập ký tự Hạn chế mã ký tự áp ñặt lên chiều dài từ ảnh hưởng đến chiều dài mã lệnh, lệnh tốt chiếm số nguyên byte số lệnh nguyên phải nằm gọn từ Tiêu chuẩn thiết kế thứ 4: số BIT trường ñịa ngắn tốt Tiêu chuẩn liên quan tới việc chọn kích thước nhớ Cứ xem thiết kế máy với ký tự bit (có bịt cộng tính chẵn lẻ) nhớ chứa 216 ký tự thấy Nhà thiết kế chọn gán ñịa liên tiếp cho ñơn vị 8, 16, 24, 32 bit, khả khác Hãy hình dung chuyện xảy ñội ngũ thiết kế phân hóa thành hai phe gây chiến, phe dốc sức tạo byte bit, ñơn vị nhớ, phe sức tạo từ 32 bit ñơn vị nhớ Phe ñầu ñề nghị nhớ 216 byte, ñược ñánh số 0, 1, 2, 3, , 65535 Phe sau ñề xuất nhớ 214 từ, ñược ñánh số 0, 1, 2, , 16383 Nhóm thứ ñế so sánh hai ký tự tổ chức từ 32 bit, chương trình tìm nạp từ chứa ký tự mà cịn phải trích ký tự từ so sánh ñược Làm tốn thêm lệnh lãng phí khơng gian Trái lại, tổ chức bit cung cấp ñịa chi cho lệnh, giúp so sánh dễ dàng nhiều Phe ñề xuất 32 bit phản bác lập luận ñề xuất họ cần 214 ñịa riêng biệt, cho ñộ dài ñịa 14 bit mà thơi, cịn đề nghị byte bit địi hỏi 16 bit ñể lập ñịa nhớ ðịa chi ngắn ñồng nghĩa với lệnh ngắn hơn, khơng chiếm khơng gian mà cịn địi hỏi thời gian tìm nạp Hoặc giữ nguyên ñịa 16 bit ñế tham chiếu nhớ lớn gấp lần mức cho phép tổ chức bit Ví dụ cho thấy để đạt phân giải nhớ tốt hơn, người ta phảỉ trả giá địa dài hơn, nói chung, có nghĩa http://www.ebook.edu.vn 158 Chương VI: Kiến trúc lệnh lệnh dài Mục tiêu tối thượng phân giải tổ chức nhớ lập ñịa trực tiếp bit Thực tế có máy tính mà chiều dài word có bit (ví dụ máy Burroughs B1700), lại có máy mà word dài, tới 60 bit (như máy CDC Cyber) 6.3.2 Opcode mở rộng Trong phần xem xét cân nhắc thỏa hiệp liên quan ñến mã tác vụ - opcode ñịa Giả sử ta có lệnh (n+k) bit với opcode chiếm k bit ñịa chiếm n bit Lệnh cung cấp 2k phép tốn khác 2n nhớ lập ñịa ñược Hoặc, n + k bit ñó chia thành opcode (k – 1) bit ñịa (n+1) bit, tức nửa số lệnh gấp đơi nhớ lập địa được, dung lượng nhớ Opcode (k+1) bit địa (n-1) bit cho nhiều phép tốn hơn, song phải trả giá số lập địa ñược Giữa bit opcode bit ñịa có qn bình tinh tế đơn giản vừa trình bày ðể hiểu rõ vấn đề xem ví dụ máy tính có lệnh dài 16 bit, mã vi tác vụ opcode dài bit trường ñịa chỉ, trường dài bit hình 6.4 15 14 13 12 Opcode 11 10 ðịa ðịa ðịa Hình 6.4 Lệnh có opcode bit ñịa bit Như vậy, ứng với mã vi tác vụ bit cung cấp cho ta =16 lệnh khác với ñịa Nhưng nhà thiết kế cần 15 http://www.ebook.edu.vn 159 Chương VI: Kiến trúc lệnh Từ gợi nhớ mã lệnh mô tả ngắn gọn tác vụ phải thi hành ghi nguồn, kết ñược lưu giữ ghi đích Mỗi lệnh ngơn ngữ cấp cao ñược xây dựng lệnh mã máy chuỗi nhiều lệnh mã máy Lệnh nhảy (GOTO) ñược thực lệnh hợp ngữ nhảy (JUMP) lệnh hợp ngữ vòng Chúng ta phân biệt lệnh nhảy làm cho đếm chương trình nạp vào ñịa tuyệt ñối nơi phải nhảy ñến (PC ← ñịa tuyệt ñối nơi phải nhảy tới), với lệnh vịng theo ta cần cộng thêm ñộ dời vào ñếm chương trình (PC ← PC + độ dời) Ngồi kiểu kiến trúc máy tính có cách mã hóa lệnh tên câu lệnh khác nhau, phần ñể ý ñến kiểu cấu trúc RISC 6.4.1 Nhóm lệnh truyền liệu Nhóm lệnh nhằm truyền liệu (a word or a block) từ nguồn ghi nhớ đến đích Phần lớn nhóm lệnh truyền liệu ghi khác CPU Việc truyền liệu từ ghi ñến ghi khác thơng qua lệnh sau: MOVE Ri, Rj ghi Ri // truyền liệu từ ghi Rj ñến Ở ñây liệu từ ghi nguồn Rj ghi đè lên ghi đích Ri, cịn liệu Rj khơng thay đổi Một số ví dụ lệnh MOVE bảng 6.4 http://www.ebook.edu.vn 176 Chương VI: Kiến trúc lệnh ðích Bộ nhớ Thanh ghi Thanh ghi Thanh ghi Nguồn Thanh ghi Bộ nhớ Ví dụ Giải thích MOVE 100H, AX Chuyển nội dung AX vao vị trí nhớ 100H MOVE AX,MEM1 Chuyển nội dung vị trí nhớ MEM1 vào ghi AX MOVE AX, BX Thanh Chuyển nội dung ghi ghi BX vào ghi AX Hằng số MOVE AX, Chuyển giá trị số 0FFFFH hệ 16: FFFF vào ghi AX, số ñầu ñể rõ FFFFH giá trị nhãn Bảng 6.4 Một số ví dụ lệnh MOVE ðể nạp giá trị từ nhớ vào ghi lưu giá trị từ ghi vào nhớ ta dùng lệnh sau: LOAD đích, nguồn ví dụ: LOAD Ri, M (địa chỉ) // Ri M[địa chỉ] STORE đích, nguồn ví dụ: STORE M(địa chỉ), Ri // M[địa chỉ] ←Ri Trong bảng 6.5 cho ta thấy số lệnh ý nghĩa Bảng 6.5 Một số lệnh truyền liệu http://www.ebook.edu.vn 177 Chương VI: Kiến trúc lệnh 6.4.2 Nhóm lệnh tính tốn số học: Các lệnh số học bao gồm bốn phép tính số học cộng, trừ, nhân, chia ñảo dấu toán hạng ADD/SUB Dạng tổng quát lệnh cộng (add) trừ (subtract) sau: ADD đích, nguồn // ñích ñích + nguồn SUB ñích, nguồn // ñích ñích – nguồn tốn hạng đích nguồn tím theo địa khác nhau, phải chứa liệu có độ dài khơng phép đồng thời hai nhớ khơng ghi đoạn Ví dụ 1: ADD ADD SUB SUB AX, BX AL,74H CL, AL AX, 0405H // AX // AL // CL // AX AX + BX AL + 74H CL – AL AX – 0405H Ví dụ 2: Viết đoạn chương trình ngơn ngữ Assembly ñể cộng 5H với 3H, dùng ghi AL BL Kết phép cộng lưu vào nhớ ñịa 100H MOV MOV ADD MOV AL, 05H BL, 03H AL, BL 100H, AL // AL 05H // BL 03H // AL AL + BL // MEM[100H] AL: di // chuyển kết từ AL vào // vị trí nhớ DS:100H Bảng 6.6 cho ta tóm tắt lệnh tính tốn số học ý nghĩa tương ứng http://www.ebook.edu.vn 178 Chương VI: Kiến trúc lệnh Tên lệnh Ý nghĩa Cộng ADD Cộng số có dấu chấm động, xác kép ADDD Trừ SUB Trừ số có dấu chấm động, xác kép SUBD Nhân MUL Chia DIV Tăng lên INC Giảm ñi DEC ðảo dấu toán hạng NEG Bảng 6.6 Các lệnh tính tốn số học 6.4.3 Nhóm lệnh logic: Tthực phép tính logic NOT, AND OR cho bit Lệnh NOT ñảo tất bit toán hạng, lệnh AND/OR thực phép tính AND/OR đơi bit tốn hạng nguồn tốn hạng đích AND/OR Dạng tổng qt lệnh AND/OR sau: AND đích, nguồn OR đích, nguồn AND/OR thực phép tốn Boolean tốn hạng nguồn đích Phép AND thường dùng ñể che ñi giữ lại vài bit tốn hạng cách nhân logic tốn hạng với tốn hạng tức thời có bit 0/1 vị trí cần che/ giữ lại tương ứng Phép OR thường dùng ñể lập vài bit tốn hạng cách cộng logic tốn hạng với tốn hạng tức thời có bit vị trí tương ứng cần thiết lập (tốn hạng tức thời trường hợp cịn ñược gọi mặt nạ) Ví dụ: AND AL, BL // Nội dung ghi BL ñược giao // với nội dung ghi AL http://www.ebook.edu.vn 179 Chương VI: Kiến trúc lệnh // kết ñược lưu lại vào // gh AL Nếu số // AL 00001101B BL // 00110011B kết // ghi AL sau phép AND 00000001B 6.4.4 Nhóm lệnh dịch chuyển số học logic (SHIFT ), quay vịng (ROTATE) có khơng có số giữ ngã vào, sang phải sang trái Các lệnh ñược thực ghi kết lưu giữ ghi khác Số lần dịch chuyển (mỗi lần dịch sang phải sang trái bit) thường ñược xác ñịnh ghi thứ ba Hình 6.11 minh hoạ cho lệnh nhóm SRL (Shift Right Logical - dịch phải logic): Các bit word ñược dịch chuyển sang phải, bit thấp (bit 0) cịn trị nhị phân “0” dịch chuyển vào bit cao SLL (Shift Left Logical - dịch trái logic): Các bit word ñược dịch chuyển sang trái, trị nhị phân “0” dịch chuyển vào bit thấp (bit 0) , bit cao ñi SRA (Shift Right Arithmetic - dịch phải số học): Bit cao bit dấu ñược giữ lại, bit lại dịch chuyển sang phải cịn bit thấp SLA (Shift Left Arithmetic – dịch trái số học): Bít cao bit dấu ñược giữ nguyên, bit dịch sang trái, bít kế bit dấu đi, trị nhị phân “0” dịch chuyển vào bit thấp Tương tự cho lệnh quay vịng hình 6.11 http://www.ebook.edu.vn 180 Chương VI: Kiến trúc lệnh Hình 6.11 Các lệnh dịch chuyển quay vòng http://www.ebook.edu.vn 181 Chương VI: Kiến trúc lệnh 6.4.5 Nhóm lệnh có điều kiện lệnh nhảy (khơng điều kiện) Lệnh có điều kiện có dạng : Nếu không (IF THEN ELSE ) Lệnh buộc phải ghi nhớ ñiều kiện nhảy vịng điều kiện thoả Ghi nhớ điều kiện Bộ tính tốn logic số học ALU cung cấp kết ngã tuỳ theo ngã vào phép tính cần làm Nó cho số thông tin khác kết dạng bit trạng thái (Hay bit cờ - flag) Các bit ñại lượng logic ðÚNG SAI (hình 6.12) Trong bit trạng thái ta có: + bit dấu S (Sign - ðúng kết âm), + bit trắc nghiệm zero Z (Zero - ðúng kết không), + bit tràn OVF (Overflow) ðÚNG phép tính số học làm ghi khơng đủ khả lưu trữ kết quả, + bit số giữ C (carry) ðÚNG số giữ ngã Các bit thường ñược gọi bit mã ñiều kiện http://www.ebook.edu.vn 182 Chương VI: Kiến trúc lệnh Toán hạng Toán hạng Số mang vào (Carry in) ALU Bit S Bit Z Bit OVF Bit C Kết Hình 6.12 Các bit trạng thái mà ALU tạo Có hai kỹ thuật để ghi nhớ bit trạng thái Cách thứ nhất, ghi trạng thái ghi đa dụng Ví dụ lệnh CMP Rk, Ri, Rj Lệnh làm phép tính trừ Ri - Rj mà khơng ghi kết phép trừ, mà lại ghi bit trạng thái vào ghi Rk Thanh ghi ñược dùng cho lệnh nhảy có điều kiện ðiểm lợi kỹ thuật giúp lưu trữ nhiều trạng thái sau nhiều phép tính để dùng sau ðiểm bất lợi phải dùng ghi ña dụng ñể ghi lại trạng thái sau phép tính mà số ghi lại bị giới hạn 32 xử lý ñại Cách thứ hai, ñể bit trạng thái vào ghi ñặc biệt gọi ghi trạng thái Vấn ñề lưu giữ nội dung ghi ñược giải nhiều cách Trong kiến trúc SPARC, có số giới hạn lệnh phép thay đổi ghi trạng thái ví dụ lệnh ADDCC, SUBCC (các lệnh thực phép tính cộng ADD phép tính trừ SUB cịn làm thay đổi ghi trạng thái) Trong kiến trúc PowerPC, ghi trạng thái ñược http://www.ebook.edu.vn 183 Chương VI: Kiến trúc lệnh phân thành trường, trường bit, ghi ñã phân thành ghi trạng thái ðặc tính chung lệnh thứ tự thực thi chương trình thay đổi nhờ tác động vào già trị lưu ghi đếm chương trình (Program Counter - PC) Sự thay đổi ghi PC khơng có điều kiện, ví dụ chương trình thực đến chỗ cần phải nhảy đến vị trí khác, ta sử dụng lệnh nhảy (Jump instruction) Trường hợp ngôn ngữ cấp cao ta hay gặp lệnh GOTO, gá trị nạp vào trước ghi PC bị xóa lệnh nhớ ñược nạp vào Thanh ghi PC thay đổi có điều kiện, mà điều kiện chủ yếu dựa vào cờ bít dấu (S), bit Zero (Z), Overflow (O) bit Carry (C) Những bit cờ ñược lưu trữ ghi ñặc biệt gọi ghi mã ñiều kiện (Condition Code register - CC) Giá trị bit cờ thay ñổi dựa vào kết thực thi lệnh khác Chúng ta xem ví dụ cụ thể sau: LOAD #100, R1 Loop: ADD (R2)+ , R0 DECREMENT R1 BEQZ R1, Loop Câu lệnh thứ lệnh có điều kiện Khi kết tăng giá trị ghi R1 0, flag Z chuyển thành lệnh ñược thực thi lệnh vị trí nhãn Loop 6.5 Cấu trúc lệnh CISC RISC Trong máy tính thứ đưa số nhị phân “0” “1” máy tính hiểu mức điện tương ứng với 0/1 transistor cụ thể, người sử dụng muốn thực chương trình đấy, phải nạp mã lệnh gồm số 0-1 vào nhớ cho máy tính Có cách để làm việc ấy: http://www.ebook.edu.vn 184 Chương VI: Kiến trúc lệnh • Viết dạng mã máy với số 0, nạp vào nhớ Cách khó thực thi thứ dễ bị nhầm lẫn số 1; thứ hai khó nhớ lệnh mã hóa thứ ba thời gian để làm việc • Viết dạng tên gợi nhớ hợp ngữ (Assembler), sau biên dịch mã máy, cấp gần với ngôn ngữ máy khó thực với chương trình phức tạp Tuy nhiên, cấu trúc gọn nhẹ, lệnh có tên tương ứng dễ nhớ • Viết ngơn ngữ cấp cao C++, Pascal, Java,…, sau dùng trình biên dịch (compiler) để dịch mã máy Cách dễ với người viết chương trình làm chương trình có dung lượng lớn viết ASM Và thách thức nhà sản xuất phần mềm, phần cứng bắt tay để chương trình biên dịch thật chuẩn tắc, nhỏ gọn, không tạo nhiều code trung gian Trong suốt thập niên 1980, nhà thiết kế cố gắng thu hẹp khoảng cách ngôn ngữ cấp cao người ngơn ngữ máy, họ đưa cấu trúc với lệnh phức tạp gọi CISC (Complex Instruction Set Computer), có chế độ định ñịa khác nhau, lệnh thực thi cần nhiều lần ñịnh ñịa ñể lấy liệu, đó, tốn nhiều chu kì xung nhịp cho lệnh Nếu việc giảm thiểu ranh giới tập lệnh vi điều khiển ngơn ngữ cấp cao khơng phải cách hay để máy tính hoạt động hiệu quả, nhà thiết kế phải ñể tối ưu tốc ñộ xử lý? Nếu muốn biết cách làm ñể vi xử lý hoạt ñộng nhanh hơn, ta phải biết vi xử lý dùng hầu hết thời gian chúng vào việc gì? Chúng ta dễ nghĩ rằng: Vi xử lý tất nhiên dùng hầu hết thời gian để tính tốn; nghĩa thời gian hầu hết ALU Thật ra, theo thống kê (xem bảng 6.7) suy đốn hồn tồn sai lầm: http://www.ebook.edu.vn 185 Chương VI: Kiến trúc lệnh Loại lệnh % sử dụng thời gian Chuyển liệu 43% ðiều khiển dịng chảy 23% Tính tốn số học 15% So sánh 13% Phép toán Logic 5% Các lệnh khác 1% Bảng 6.7 Thống kê thời gian thực loại lệnh So sánh CISC RISC Sự khác biệt chip dịng máy tính với tập lệnh rút gọn RISC (reduced instruction set computer) máy tính với tập lệnh phức tạp CISC (complex instruction set computer, chẳng hạn dịng chip x86 Intel) ñược xem ganh ñua nhà lập trình nhà thiết kế chip Chip CISC ñược thiết kế nhằm tạo thuận lợi cho nhà lập trình ứng dụng cách rút gọn nhiều câu lệnh ñơn giản, thông dụng thành câu lệnh thực thi dài ðiều làm cho CISC xử lý chậm lại ñạt yếu tố thân thiện Ở mặt khác, RISC nhanh thân thiện hơn, câu lệnh ñơn giản RISC phục vụ cho mục đích hẹp cụ thể, thực nhanh lệnh ñược tiến hành song song RISC ñòi hỏi nhà lập trình phải kiên nhẫn, giỏi trình biên dịch ñược tối ưu kỹ lưỡng ðiểm mạnh xử lý dùng tập lệnh RISC: – Kích thước miếng bán dẫn nhỏ hơn: xử lý đơn giản địi hỏi transistor hơn, đó, kích thước cần dùng nhỏ lại, dành vùng diện tích trống để tăng chức nhớ cache, chức quản lý nhớ, vv… – Thời gian phát triển sản phẩm ngắn kĩ thuật ñơn giản – Tốc ñộ xử lý tăng lên ñáng kể Khi ta ñặt lệnh phức tạp, gần gũi với ngơn ngữ cấp cao, thế, vơ tình làm lệnh khác phức tạp lên, ñể http://www.ebook.edu.vn 186 Chương VI: Kiến trúc lệnh thực thi lệnh cần tốn nhiều chu kì xung nhịp Trong đó, dùng RISC chu kì xung nhịp cho lệnh, ta phân nhỏ vấn ñề phức tạp thành vấn ñề ñơn giản cách giải tốt Các điểm bất lợi RISC: Khơng phải RISC có điều thuận lợi, có vài bất cập, mà cụ thể là: – Tập lệnh RISC không phong phú CISC, cần thiết kế chương trình mà khơng có lệnh cần thiết phải thơng qua loạt lệnh khác làm tăng lên số chu kỳ xung nhịp cần thiết, tức ñã làm chậm hệ thống ñi – Cấm thâm nhập nhớ ñối với tất lệnh ngoại trừ lệnh ñọc ghi vào nhớ Do ta buộc phải dùng nhiều lệnh để làm cơng việc định – Cần thiết phải tính địa hiệu dụng khơng có nhiều cách định vị – Khơng thể thực thi mã lệnh x86, kiểu kiến trúc máy tính thông dụng quen thuộc với người Như để tích hợp phải dùng phần mềm hỗ trợ sở cho RISC, nhiên, với máy tính IBM, bị từ chối Tóm lại ñiểm khác biệt hai kiểu kiến trúc RISC CISC liệt kê bảng 6.8 http://www.ebook.edu.vn 187 Chương VI: Kiến trúc lệnh RISC – Kích thước lệnh (độ dài lệnh) cố ñịnh ( 32 bit) với vài ñịnh dạng – Sử dụng kiến trúc load-store lệnh xử lý liệu hoạt ñộng ghi cách ly với lệnh truy cập nhớ – Một số lớn ghi ña dụng 32 bit, cho phép cấu trúc load-store hoạt ñộng hiệu – Có số lệnh (thường 100 lệnh) – Có số kiểu định vị ( thường định vị tức định vị gián tiếp qua ghi) – Có số dạng lệnh (một hai) – Chỉ có lệnh ghi đọc nhớ thâm nhập vào nhớ – Giải mã lệnh logic kết nối phần cứng CISC – Kích thước tập lệnh thay đổi với nhiều ñịnh dạng khác – Cho phép giá trị nhớ dùng như tốn hạng lệnh xử lý liệu – Có nhiều ghi, hầu hết để sử dụng cho mục đích riêng biệt – Có 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 thâm nhập vào nhớ ñược – Sử dụng nhiều code ROM giải mã lệnh – Các máy cũ cho phép – Thực thi lệnh theo cấu trúc dòng lệnh thực thi kiểu này, dòng chảy (xem hình 7.9 chúng phải hết dịng lệnh chương sau) đến dịng lệnh khác – Cần nhiều chu kì xung nhịp để hồn thành lệnh – Một lệnh thực thi chu kì xung nhịp Bảng 6.8 Các điểm khác RISC CISC http://www.ebook.edu.vn 188 Chương VI: Kiến trúc lệnh CÂU HỎI VÀ BÀI TẬP CHƯƠNG VI Có máy loại kiến trúc lệnh bản? Nêu ưu nhược ñiểm loại Cho biết đạc tính kiểu kiến trúc ghi ña dụng ðịa nhớ ñược xếp nào? Giữa cách Intel Motorola khác biệt gì? Vướng mắc xảy máy tính hai hãng kết nối với nhau? Cho biết cách mã hóa tập lệnh đưa vài dạng mã hóa Hãy cho biết giải thích tiêu chuẩn thiết kế dạng thức lệnh Cho biết cách mã hóa tập lệnh đưa vài dạng mã hóa Thiết kế opcode mở rộng nhằm cho phép mã hóa nội dung sau lệnh 36 bit a) lệnh có hai địa 15 bit số hiệu ghi bit b) 500 lệnh có ñịa 15 bit số hiệu ghi bit c) 50 lệnh khơng có địa ghi Có thể thiết kế opcode mở rộng phép mã hóa nội dung sau lệnh 12 bit khơng? Thanh ghi rộng bit a) lệnh có ba ghi b) 255 lệnh có ghi c) 16 lệnh khơng có ghi http://www.ebook.edu.vn 189 Chương VI: Kiến trúc lệnh Cho biết chế ñộ lập ñịa ưu, nhược điểm loại Mơ tả hình cách lập địa 10 Mơ tả kiểu thi hành lệnh máy tính Tại kiểu thi hành lệnh ghi – ghi ñược dùng nhiều tại? 11 Hãy diễn giải trình biên dịch ngôn ngữ máy từ ngôn ngữ cấp cao 12 Các lệnh máy tính phân nhóm lệnh nào? đưa ví dụ cho nhóm lệnh 13 Mơ tả hình vẽ lệnh dịch chuyển quay vịng giải thích tác dụng lệnh 14 Hãy cho biết số bit trạng thái mà ALU tạo cách dùng bit lệnh nhảy 15 Hãy phân biệt khác hai kiểu kiến trúc máy tính RISC CISC http://www.ebook.edu.vn 190 ... lệnh t? ?i ña 16 byte CPU 8088 802 86 803 86 Pentium PREFIX OPCODE MODE SIB DISPLACEMENT IMMEDIATE 0-3 0-3 0-4 0-4 1 1-2 1-2 0-1 0-1 0-1 0-1 0 0-1 0-1 0-2 0-2 0-4 0-4 0-2 0-2 0-4 0-4 Bảng 6. 2 Dạng... http://www.ebook.edu.vn 152 Chương VI: Kiến trúc lệnh Kiểu kiến trúc ghi ña dụng Do kiểu kiến trúc ghi ña dụng chiếm vị trí hàng ñầu nên phần sau, ta ñề cập ñến kiểu kiến trúc ð? ?i v? ?i lệnh tính tốn logic ? ?i? ??n hình... ph? ?i dùng phần mềm hỗ trợ sở cho RISC, nhiên, v? ?i máy tính IBM, bị từ ch? ?i Tóm l? ?i ? ?i? ??m khác biệt hai kiểu kiến trúc RISC CISC liệt kê bảng 6. 8 http://www.ebook.edu.vn 187 Chương VI: Kiến trúc

Ngày đăng: 11/05/2021, 04:50

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan