KIẾN TRÚC PHẦN MỀM BỘ XỬ LÝ

16 3 0
KIẾN TRÚC PHẦN MỀM BỘ XỬ LÝ

Đ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

OpenStax-CNX module: m30617 Kiến trúc phần mềm Bộ xử lý∗ ThS Võ Văn Chín KS Phạm Hữu Tài ThS Nguyễn Hông Vân This work is produced by OpenStax-CNX and licensed under the Creative Commons Attribution License 3.0† KIẾN TRÚC PHẦN MỀM BỘ XỬ LÝ Mục đích: Giới thiệu thành phần hệ thống máy tính, khái niệm kiến trúc máy tính, tập lệnh Giới thiệu kiểu kiến trúc máy tính, kiểu định vị dùng kiến trúc, loại chiều dài tốn hạng, tác vụ mà máy tính thực Kiến trúc RISC (Reduced Instruction Set Computer): mô tả kiến trúc, kiểu định vị Giới thiệu tổng quát tập lệnh kiến trúc máy tính Yêu cầu : Sinh viên có kiến thức thành phần hệ thống máy tính, khái niệm kiến trúc máy tính, tập lệnh Nắm vững kiến thức kiểu kiến trúc máy tính, kiểu định vị dùng kiến trúc, loại chiều dài toán hạng, tác vụ mà máy tính thực Phân biệt hai loại kiến trúc: CISC (Complex Instruction Set Computer), RISC (Reduced Instruction Set Computer) Các kiến thức kiến trúc RISC, tổng quát tập lệnh kiến trúc máy tính THÀNH PHẦN CƠ BẢN CỦA MỘT MÁY TÍNH Thành phần máy tính gồm: xử lý trung tâm (CPU: Central Processing Unit), nhớ trong, phận nhập-xuất thông tin Các phận kết nối với thông qua hệ thống bus Hệ thống bus bao gồm: bus địa chỉ, bus liệu bus điều khiển Bus địa bus liệu dùng việc chuyển liệu phận máy tính Bus điều khiển làm cho trao đổi thông tin phận đồng Thông thường người ta phân biệt bus hệ thống dùng trao đổi thông tin CPU nhớ (thông qua cache), bus vào-ra dùng trao đổi thông tin phận vào-ra nhớ Bộ điều khiển(CU)Bộ làm tính luận lý (ALU)Các ghi(Registers)Bus địa chỉBus liệuBus điều khiểnBộ nhớ trongNgoại viBộ xử lý trung tâm (CPU)Hình II.1: Cấu trúc hệ máy tính đơn giảnMột chương trình chép từ đĩa cứng vào nhớ với thông tin cần thiết cho chương trình hoạt động, thơng tin nạp vào nhớ từ phận cung cấp thơng tin (ví dụ bàn phím hay đĩa từ) Bộ xử lý trung tâm đọc lệnh liệu từ nhớ, thực lệnh lưu kết trở lại nhớ hay cho xuất kết phận xuất thơng tin (màn hình hay máy in) Thành phần máy tính bao gồm : ∗ Version 1.1: Jul 26, 2009 11:33 am -0500 † http://creativecommons.org/licenses/by/3.0/ http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 • Bộ nhớ trong: Đây tập hợp ô nhớ, nhớ có số bit định chức thơng tin mã hố thành số nhị phân mà không quan tâm đến kiểu liệu mà chứa Các thơng tin lệnh hay số liệu Mỗi ô nhớ nhớ có địa Thời gian thâm nhập vào ô nhớ nhớ Vì vậy, nhớ cịn gọi nhớ truy cập ngẫu nhiên (RAM: Random Access Memory) Độ dài từ máy tính (Computer Word) 32 bit (hay byte), nhiên dung lượng ô nhớ thông thường bit (1 Byte) • Bộ xử lý trung tâm (CPU): phận thi hành lệnh CPU lấy lệnh từ nhớ lấy 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 phần điều khiển Phần thi hành lệnh bao gồm làm toán luận lý (ALU: Arithmetic And Logic Unit) ghi Nó có nhiệm vụ làm phép tốn số liệu Phần điều khiển có nhiệm vụ đảm bảo thi hành lệnh cách tác động mạch chức để thi hành lệnh • Bộ phận vào - ra: phận xuất nhập thông tin, phận thực giao tiếp máy tính người dùng hay máy tính hệ thống mạng (đối với máy tính kết nối thành hệ thống mạng) Các phận xuất nhập thường gặp là: lưu trữ ngoài, hình, máy in, bàn phím, chuột, máy qt ảnh, giao diện mạng cục hay mạng diện rộng Bộ tạo thích ứng vi mạch tổng hợp (chipset) kết nối hệ thống bus có tốc độ liệu khác Bus hệ thống ( Bus nối CPU - Bộ nhớ ) Cache Bộ tạo thích ứng CPU Bus vào - Đĩa Điều khiển vào -ra từ Màn hình đồ thị MạngHình II.2: Sơ đồ mơ tả hoạt động điển hình máy tính Bộ nhớ Điều khiển vào -ra Table http://cnx.org/content/m30617/1.1/ Điều khiển vào -ra OpenStax-CNX module: m30617 3 ĐỊNH NGHĨA KIẾN TRÚC MÁY TÍNH 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 máy tính lắp đặt phần cứng Kiến trúc phần mềm máy tính chủ yếu kiến trúc phần mềm xử lý, bao gồm: tập lệnh, dạng lệnh kiểu định vị • Trong đó, tập lệnh tập hợp lệnh mã máy (mã nhị phân) hồn chỉnh hiểu xử lý bới xử lý trung tâm, thông thường lệnh tập lệnh trình bày dạng hợp ngữ Mỗi lệnh chứa thông tin yêu cầu xử lý thực hiện, bao gồm: mã tác vụ, địa toán hạng nguồn, địa toán hạng kết quả, lệnh (thơng thường thơng tin ẩn) • Kiểu định vị cách thức thâm nhập toán hạng Kiến trúc phần mềm phần mà lập trình viên hệ thống phải nắm vững để việc lập trình hiểu quả, sai sót • Phần tổ chức máy tính liên quan đến cấu trúc bên xử lý, cấu trúc bus, cấp nhớ mặt kỹ thuật khác máy tính Phần nói đến chương sau • Lắp đặt phần cứng máy tính ám việc lắp ráp máy tính dùng linh kiện điện tử phận phần cứng cần thiết Chúng ta khơng nói đến phần giáo trình Ta nên lưu ý vài máy tính có kiến trúc phần mềm phần tổ chức khác (VAX11/780 VAX 8600) Các máy VAX- 11/780 VAX- 11/785 có kiến trúc phần mềm phần tổ chức gần giống Tuy nhiên việc lắp đặt phần cứng máy khác Máy VAX- 11/785 dùng mạch kết cải tiến tần số xung nhịp thay đổi tổ chức nhớ CÁC KIỂU THI HÀNH MỘT LỆNH Như mô tả, lệnh mã máy bao gồm mã tác vụ tốn hạng Ví dụ: lệnh mã máy 01101001010101010000001101100101 Việc chọn số toán hạng cho lệnh mã máy vấn đề then chốt phải có cân đối tốc độ tính tốn số mạch tính tốn phải dùng Tuỳ theo tần số sử dụng phép mà nhà thiết kế máy tính định số lượng mạch chức cần thiết cho việc tính tốn Thơng thường số toán hạng thay đổi từ tới Ví dụ: lệnh Y := A + B + C + D lệnh mã máy ta có mạch cộng, thực lệnh mã máy có mạch cộng, việc tính tốn xảy ít, người ta cần thiết kế mạch cộng thay phải tốn chi phí lắp đặt mạch cộng Tuy nhiên, với mạch cộng thời gian tính tốn hệ thống chậm với hệ thống có ba mạch cộng Vị trí tốn hạng xem xét Bảng II.1 chọn vài nhà sản xuất máy tính kiểu vị trí tốn hạng lệnh tính tốn ALU là: ngăn xếp, ghi tích luỹ, ghi đa dụng Những kiến trúc phần mềm gọi kiến trúc ngăn xếp, kiến trúc ghi tích luỹ kiến trúc ghi đa dụng Vị trí tốn hạng Thí dụ Tốn hạng cho lệnh tính tốn ALU Vị trí đặt kết Cách thức thâm nhập vào toán hạng continued on next page http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 Ngăn xếp B 5500 3000/70 HP Ngăn xếp Lệnh Push, Pop Thanh ghi tích luỹ PDP Motorola 6809 Thanh ghi tích luỹ Lệnh nạp vào lấy từ ghi tích luỹ (load, store) Thanh ghi đa dụng IBM 360 VAX Thanh ghi nhớ Lệnh nạp vào lấy từ ghi nhớ DEC, Bảng II.1 : Ví dụ cách chọn lựa vị trí toán hạng Table Một vài nhà sản xuất máy tính tuân thủ chặt chẽ kiểu chọn vị trí toán hạng nêu trên, phần nhiều xử lý dùng kiểu hỗn tạp Ví dụ, mạch xử lý 8086 Intel dùng lúc kiểu "thanh ghi đa dụng" kiểu "thanh ghi tích luỹ" Ví dụ minh hoạ chuỗi lệnh phải dùng để thực phép tính C := A + B kiểu kiến trúc phần mềm Kiến trúc ngăn xếp Kiến trúc ghi tích luỹ Kiến trúc ghi đa dụng Push APush BADDPop C Load AADD BStore C Load R1, AADD R1, BStore R1, C Table Bảng II.2: Chuỗi lệnh dùng thực phép tính C := A + B (giả sử A, B, C nằm nhớ trong) 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 Loại kiến trúc Lợi điểm Bất lợi Ngăn xếp(Stack) - Lệnh ngắn FIXME: A LIST CAN NOT BE A TABLE ENTRY Ít mã máyLàm tối thiểu trạng thái bên máy tínhDễ dàng tạo biên dịch đơn giản cho kiến trúc ngăn xếp FIXME: A LIST CAN NOT BE A TABLE ENTRY Thâm nhập ngăn xếp khơng ngẫu nhiên.Mã khơng hiệu quảKhó dùng xử lý song song ống dẫnKhó tạo biên dịch tối ưu continued on next page http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 Thanh ghi tích luỹ(Accumulator Register) FIXME: A LIST CAN NOT BE A TABLE ENTRY Lệnh ngắnLà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 FIXME: A LIST CAN NOT BE A TABLE ENTRY 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ẫnTrao đổi nhiều với nhớ Thanh ghiđa dụng(General Register) FIXME: A LIST CAN NOT BE A TABLE ENTRY 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 FIXME: A LIST CAN NOT BE A TABLE ENTRY Lệnh dàiSố lượng ghi bị giới hạn Table Bảng II.3: Điểm lợi bất lợi kiểu kiến trúc phần mềm KIỂU KIẾN TRÚC THANH 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 lên 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 toán hạng phải vừa toán hạng nguồn, vừa tốn hạng đích (Ví dụ: add A, B) Thứ hai, số lượng tốn hạng nhớ có lệnh Số tốn hạng nhớ thay đổi từ tới Trong 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 : ghi-thanh ghi (kiểu gọi nạp - lưu trữ), ghi - nhớ 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 TẬP LỆNH Mục tiêu phần dùng ví dụ trích từ kiến trúc phần mềm dùng nhiều nhất, thấy kỹ thuật mức ngôn ngữ máy dùng để thi hành cấu trúc ngơn ngữ cấp cao Để minh hoạ thí dụ, ta dùng cú pháp lệnh hợp ngữ sau : Từ gợi nhớ mã lệnh, ghi đích, ghi nguồn 1, ghi nguồn 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 lưu giữ ghi đích Mỗi lệnh ngơn ngữ cấp cao xây dựng lệnh mã máy chuỗi nhiều lệnh mã máy Lệnh nhảy (GOTO) 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 [U+F0AC] đị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 [U+F0AC] PC + độ dời) Ta lưu ý trường hợp sau, PC chứa địa tương đối so với địa lệnh sau lệnh vòng http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 6.1 Gán trị Việc gán trị, gồm gán trị cho biểu thức số học logic, thực nhờ số lệnh mã máy Cho kiến trúc RISC, ta nêu lên lệnh sau : - Lệnh nhớ LOAD Ri, M (địa chỉ) M[địa chỉ] [U+F0AC] Ri STORE Ri, M(địa chỉ) ; Ri [U+F0AC] M[địa chỉ] Địa tính tuỳ theo kiểu định vị dùng - Lệnh tính tốn số học: tính tốn số ngun nội dung hai ghi Ri, Rj xếp kết vào Rk: ADD (cộng) ADDD (cộng số có dấu chấm động, xác kép) SUB (trừ) SUBD (trừ số có dấu chấm động, xác kép) MUL (nhân) DIV (chia) - Lệnh logic: thực phép tính logic cho bit AND (lệnh VÀ) OR (lệnh HOẶC) XOR (lệnh HOẶC LOẠI) Figure Dịch phải logicDịch trái logicDịch trái số họcDịch phải số họcQuay tráiQuay phảiHình II.7: Minh hoạ lệnh dịch chuyển quay vòng010NEG (lệnh lấy số bù ) - Các 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 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 xác định ghi thứ ba Hình II.7 minh hoạ cho lệnh Cho kiến trúc kiểu RISC, ta có : SLL (shift left logical : dịch trái logic) SRL (shift right logical : dịch phải logic) SRA (shift right arithemtic : dịch phải số học) 6.2 Lệnh có đ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ả 6.2.1 a) Ghi nhớ điều kiện Bộ làm tính 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 Các bit đại lượng logic ĐÚNG SAI (hình II.8) http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 Bit SBit ZBit OVFBit CALUSố giữToán hạng nguồn 1Toán hạng nguồn 2Kết quả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 gọi bit mã điều kiện Hình II.8 : 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 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 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 phân thành trường, trường bit, ghi phân thành ghi trạng thái 6.2.2 b) Nhảy vịng Các lệnh nhảy nhảy vịng có điều kiện, thực lệnh nhảy điều kiện thoả Trong trường hợp ngược lại, việc thực chương trình tiếp tục với lệnh sau Lệnh nhảy xem xét ghi trạng thái nhảy điều kiện nêu lên lệnh Chúng ta xem ví dụ thực lệnh nhảy có điều kiện Giả sử trạng thái sau xử lý thi hành tác vụ, lưu trữ ghi, xử lý thi hành lệnh sau : 1.CMP R4, R1, R2: So sánh R1 R2 cách trừ R1 cho R2 lưu giữ trạng thái R4 2.BGT R4, +2: Nhảy bỏ lệnh R1 > R2 3.ADD R3, R0, R2: R0 có giá trị Chuyển nội dung R2 vào R3 4.BRA +1: nhảy bỏ lệnh 5.ADD R3, R0, R1: chuyển nội dung R1 vào R3 Lệnh kế Nếu R1 > R2 chuỗi lệnh thi hành 1, 2, 5, thi hành, khơng chuỗi lệnh 1, 2, 3, 4, thi hành Chuỗi lệnh , có lệnh nhảy, thực công việc sau : Nếu R1 > R2 R3 = R1 khơng R3 = R2 Các lệnh nhảy làm tốc độ thi hành lệnh chậm lại, CPU đại dùng kỹ thuật ống dẫn Trong vài xử lý người ta dùng lệnh di chuyển có điều kiện để tránh dùng lệnh nhảy vài trường hợp Thí dụ viết lại : CMP R4, R1, R2 : So sánh R1 R2 để bit trạng thái R4 2.ADD R3, R0, R2: Di chuyển R2 vào R3 3.MGT R4, R3, R1: (MGT : Move if greater than) Nếu R1 > R2 di chuyển R1 vào R3 http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 6.3 Vịng lặp Các lệnh vịng lặp thực nhờ lệnh nhảy có điều kiện mà ta nói Trong trường hợp này, ta quản lý số lần lặp lại đếm vòng lặp, người ta kiểm tra đếm sau vòng lặp để xem đủ số vòng cần thực hay chưa Bộ xử lý PowerPC có lệnh quản lý vòng lặp BNCT Ri, độ dời Với ghi Ri chứa số lần lặp lại Lệnh làm công việc sau: Ri := Ri -1 Nếu Ri 0, PC := PC + độ dời Nếu không tiếp tục thi hành lệnh kế 6.4 Thâm nhập nhớ ngăn xếp Ngăn xếp tổ chức nhớ cho ta đọc từ đỉnh ngăn xếp viết từ vào đỉnh ngăn xếp Địa đỉnh ngăn xếp chứa ghi đặc biệt gọi trỏ ngăn xếp SP (Stack Pointer) Ứng với cấu trúc ngăn xếp, người ta có lệnh viết vào ngăn xếp PUSH lệnh lấy khỏi ngăn xếp POP Các lệnh vận hành sau: - Cho lệnh PUSH SP := SP +1 M (SP) := Ri (Ri ghi cần viết vào ngăn xếp) - Cho lệnh POP Ri := M(SP) (Ri ghi, nhận từ lấy khỏi ngăn xếp) SP := SP -1 Trong xử lý RISC, việc viết vào lấp khỏi ngăn xếp dùng lệnh bình thường Ví dụ ghi R30 trỏ ngăn xếp việc viết vào ngăn xếp thực lệnh: ADDI R30, R30, ; tăng trỏ ngăn xếp lên từ dài 32 bit STORE Ri, (R30) ; Viết Ri vào đỉnh ngăn xếp Việc lấy khỏi ngăn xếp thực lệnh : LOAD Ri, (R30) ; lấy số liệu đỉnh ngăn xếp nạp vào Ri SUBI R30, R30,4 ; giảm trỏ ngăn xếp bớt 6.5 Các thủ tục Các thủ tục gọi từ nơi chương trình nhờ lệnh gọi thủ tục CALL Để chấm dứt việc thi hành thủ tục chương trình gọi tiếp tục bình thường, ta cần lưu giữ địa trở tức địa lệnh sau lệnh gọi thủ tục CALL Khi chấm dứt thi hành thủ tục, lệnh trở RETURN nạp địa trở vào PC Trong kiến trúc CISC (VAX 11, 80x86, 680x0), địa trở giữ ngăn xếp Trong kiến trúc RISC, ghi đặc biệt (thường ghi R31) dùng để lưu giữ địa trở Lệnh gọi thủ tục lệnh loại JMPL Ri, lệnh làm tác vụ : R31 := PC; để địa trở R31 PC := Ri; nhảy tới địa thủ tục nằm ghi Ri Lệnh trở chấm dứt thủ tục JMP R31, ghi R31 chứa địa trở Việc dùng ghi đặc biệt để lưu trữ địa trở giải pháp áp dụng cho thủ tục cuối cùng, nghĩa cho thủ tục khơng gọi thủ tục Để cho thủ tục gọi thủ tục khác, ta có hai giải pháp: Giải pháp 1: có nhiều ghi để lưu trữ địa trở Giải pháp 2: lưu giữ địa trở ngăn xếp Việc gọi thủ tục thực chuỗi lệnh sau : ADDI R30, R30,4 ; R30 trỏ ngăn xếp http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 STORE R31, (R30) ; lưu giữ địa trở JMPL Ri ; gọi thủ tục Người ta dùng chuỗi lệnh sau để trở chương trình gọi : LOAD R31, (R30) ; phục hồi địa trở Figure Figure Chương trình chínhBộ nhớ trongĐịa chỉa) Gọi thủ tục trở vềb) Diễn tiến thi hànha) Khởi tạo ngăn xếpb) Sau lời gọi thủ tục 1c) Sau lời gọi thủ tục 2d) Trở sau lời gọi thủ tục 2e) Sau lời gọi thủ tục lần 2f) Trở sau lời gọi thủ tục 2g) Trở sau lời gọi thủ tục 1Hình II.9: Gọi thủ tục trở thực xong thủ tụcThủ tục Proc1Thủ tục Proc2SUBI R30, R30,4 ; cập nhật trỏ ngăn xếp JMP R31 ; trở chương trình gọi Việc truyền tham số từ thủ tục gọi đến thủ tục bị gọi thực cách dùng ghi xử lý dùng ngăn xếp Nếu số tham số cần truyền ít, ta dùng ghi CÁC KIỂU ĐỊNH VỊ Kiểu định vị định nghĩa cách thức thâm nhập toán hạng Một vài kiểu xác định cách thâm nhập tốn hạng nhớ, nghĩa cách tính địa toán hạng, kiểu khác xác định toán hạng nằm ghi Figure Địa từ x cho hai minh hoạHình II.3: Minh hoạ hai cách xếp địa nhớChú ý rằng, kiểu định vị, ta cần lưu ý chuyển đổi liệu nhị phân hai kiểu định địa liên quan đến ô nhớ, từ máy tính gồm bốn byte, ô nhớ chứa byte Như vậy, từ máy tính lưu bốn nhớ liên tiếp nhớ trong, có nhiều cách xác từ máy tính, đó, hai cách tiêu biểu là: • Định vị kiểu Big-Endian: byte thấp đặt ô nhớ có địa cao (IBM, Motorolla, Sun, HP http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 10 ) • Định vị kiểu Little-Endian: byte thấp đặt ô nhớ có địa thấp (Intel, DEC • ) Kiểu định vị Ví dụ lệnh Giải thích Thanh ghi Add R3, R4 R3 [U+F0AC] R3 + R4 Tức Add R4, #3 R4 [U+F0AC] R4 + Trực tiếp Add R1, (1001) R1 [U+F0AC] R1 + M [1001] Gián tiếp (thanh ghi) ADD R4, (R1) R4 [U+F0AC] R4 + M [R1] Gián tiếp (bộ nhớ) Add R1, @ (R3) R1 [U+F0AC] R1 + M[ M [R3]] Gián tiếp (thanh ghi + Độ dời) Add R4, 100(R1) R4 [U+F0AC] R4 + M[R1 + 100] Gián tiếp (thanh ghi + ghi) Add R3, (R1 + R2) R3 [U+F0AC] R3 + M[R1 + R2] Gián tiếp ( t/g + t/g số + độ dời ) Add R1, 100(R2)[R3] R1[U+F0AC]R1+M[100+R2+ d * R3] Tự tăng Add R1, (R2)+ R1 [U+F0AC] R1 + M[R2]R2 [U+F0AC] R2 +d Tự giảm Add R1, -(R2) R2 [U+F0AC] R2 - dR1 [U+F0AC] R1 + M[R2] Table Bảng II.4 :Kiểu định vị xử lý có kiến trúc phần mềm kiểu ghi đa dụng R1, R2, R3, R4 : ghi R4 [U+F0AC] R3 + R4 : Cộng ghi R3 R4 để kết R4 M[R1] : R1 chứa địa nhớ mà toán hạng lưu trữ M[1001] : toán hạng lưu trữ địa 1001 d : số byte số liệu cần thâm nhập (d = cho từ máy tính, d = cho từ đơi máy tính ) Trong kiểu định vị ghi, toán hạng chứa ghi Trong kiểu định vị tức thì, tốn hạng chứa lệnh Trong kiểu định vị trực tiếp, địa toán hạng chứa lệnh Trong kiểu định vị gián tiếp (thanh ghi), địa toán hạng chứa ghi Trong kiểu định vị gián tiếp (bộ nhớ), ghi R3 chứa địa địa toán hạng hình II.4 Bộ nhớ R3(R3 tới địa này) Ơ nhớ chứađịa tốn hạng Tốn hạng Table Hình II.4: Minh hoạ kiểu định vị gián tiếp (bộ nhớ) http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 11 KIỂU CỦA TOÁN HẠNG VÀ CHIỀU DÀI CỦA TOÁN HẠNG Kiểu toán hạng thường đưa vào mã tác vụ lệnh Có bốn kiểu tốn hạng dùng hệ thống: • • • • Kiểu Kiểu Kiểu Kiểu địa dạng số: số nguyên, dấu chấm động, dạng chuỗi ký tự: ASCII, EBIDEC, liệu logic: bit, cờ, Tuy nhiên số máy tính dùng nhãn để xác định kiểu tốn hạng Thơng thường loại tốn hạng xác định ln chiều dài Tốn hạng thường có chiều dài byte (8 bit), từ máy tính (16 bit), từ máy tính (32 bit), từ đơi máy tính (64 bit) Đặc biệt, kiến trúc PA hãng HP (Hewlet Packard) có khả tính tốn với số thập phân BCD Một vài xử lý xử lý chuỗi ký tự TÁC VỤ MÀ LỆNH THỰC HIỆN Bảng II.5 cho loại tác vụ mà máy tính thực Trên tất máy tính ta thấy loại (tính tốn số học luận lý, di chuyển số liệu, chuyển điều khiển) Tuỳ theo kiến trúc máy tính, người ta thấy vài loại tác vụ số tác vụ lại (hệ thống, tính tốn với số có dấu chấm động, tính tốn với số thập phân, tính tốn chuỗi ký tự) Loại tác vụ Thí dụ Tính tốn số học luận lý Phép tính số nguyên phép tính luận lý: cộng, trừ, AND, OR Di chuyển số liệu Nạp số liệu, lưu giữ số liệu Chuyển điều khiển Lệnh nhảy, lệnh vịng lặp, gọi chương trình trở về, ngắt quãng Hệ thống Gọi hệ điều hành, quản lý nhớ ảo Tính số có dấu chấm động Các phép tính số có dấu chấm động: cộng, nhân Tính số thập phân Các phép tính số thập phân: cộng, nhân, đổi từ thập phân sang ký tự Tính tốn chuỗi ký tự Chuyển, so sánh, tìm kiếm chuỗi ký tự Đồ hoạ đa phương tiện Nén giải nén liệu hình ảnh đồ hoạ (3D) liệu đa phương tiện (hình ảnh động âm thanh) Table Bảng II.5: Các tác vụ mà lệnh thực 10 KIẾN TRÚC RISC ( Reduced Instruction Set Computer) Các kiến trúc với tập lệnh phức tạp CISC (Complex Instruction Set Computer) nghĩ từ năm 1960 Vào thời kỳ này, người ta nhận thấy chương trình dịch khó dùng ghi, vi lệnh thực nhanh lệnh cần thiết phải làm giảm độ dài chương trình Các đặc tính nầy khiến người ta ưu tiên chọn kiểu ô nhớ - ô nhớ ô nhớ - ghi, với lệnh phức tạp dùng http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 12 nhiều kiểu định vị Điều dẫn tới việc lệnh có chiều dài thay đổi dùng điều khiển vi chương trình hiệu Bảng II.6 cho đặc tính vài máy CISC tiêu biểu Ta nhận thấy ba máy có điểm chung có nhiều lệnh, lệnh có chiều dài thay đổi Nhiều cách thực lệnh nhiều vi chương trình dùng Tiến lãnh vực mạch kết (IC) kỹ thuật dịch chương trình làm cho nhận định trước phải xem xét lại, có khảo sát định lượng việc dùng tập lệnh máy CISC Bộ xử lý IBM 370/168 DEC 11/780 iAPX 432 Năm sản xuất 1973 1978 1982 Số lệnh 208 303 222 Bộ nhớ vi chương trình 420 KB 480 KB 64 KB Chiều dài lệnh (tính bit) 16 - 48 16 - 456 - 321 Kỹ thuật chế tạo ECL - MSI TTl - MSI NMOS VLSI Cách thực lệnh Thanh ghithanh ghiThanh ghi - nhớBộ nhớ - nhớ Thanh ghi - ghiThanh ghi - nhớBộ nhớ - nhớ Ngăn xếpBộ nhớ- nhớ Dung lượng cache 64 KB 64 KB Table Bảng II.6: Đặc tính vài máy CISC Ví dụ, chương trình dịch biết sử dụng ghi khơng có khác biệt đáng kể sử dụng ô nhớ cho vi chương trình hay nhớ cho chương trình Điều dẫn tới việc đưa vào khái niệm máy tính với tập lệnh rút gọn RISC vào đầu năm 1980 Các máy RISC dựa chủ yếu tập lệnh cho phép thực kỹ thuật ống dẫn cách thích hợp cách thiết kế lệnh có chiều dài cố định, có dạng đơn giản, dễ giải mã Máy RISC dùng kiểu thực lệnh ghi - ghi Chỉ có lệnh ghi đọc ô nhớ cho phép thâm nhập vào ô nhớ Bảng II.7 diễn tả ba mẫu máy RISC đầu tiên: mẫu máy IBM (IBM 801) Berkeley (RISC1 Patterson) Stanford (MIPS Hennessy) Ta nhận thấy ba máy có điều khiển mạch điện (khơng có nhớ vi chương trình), có chiều dài lệnh cố định (32 bits), có kiểu thi hành lệnh (kiểu ghi - ghi) có số lệnh Bộ xử lý IBM 801 RISC1 MIPS Năm sản xuất 1980 1982 1983 Số lệnh 120 39 55 Dung lượng nhớ vi chương trình 0 continued on next page http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 13 Độ dài lệnh (tính bit) 32 32 32 Kỹ thuật chế tạo ECL MSI NMOS VLSI NMOS VLSI Cách thực lệnh Thanh ghi-thanh ghi Thanh ghi-thanh ghi Thanh ghi-thanh ghi Table Bảng II.7 : Đặc tính ba mẫu máy RISC Tóm lại, ta định nghĩa mạch xử lý RISC tính chất sau: - Có số lệnh (thơng thường 100 lệnh ) - Có số kiểu định vị (thơng thường hai kiểu: định vị tức định vị gián tiếp thông qua ghi) - Có số dạng lệnh (một hai) - Các lệnh có chiều dài - Chỉ có lệnh ghi đọc ô nhớ thâm nhập vào nhớ - Dùng tạo tín hiệu điều khiển mạch điện để tránh chu kỳ giải mã vi lệnh làm cho thời gian thực lệnh kéo dài - Bộ xử lý RISC có nhiều ghi để giảm bớt việc thâm nhập vào nhớ Ngoài xử lý RISC thực tất lệnh chu kỳ máy Bộ xử lý RISC có lợi điểm sau : - Diện tích xử lý dùng cho điều khiển giảm từ 60% (cho xử lý CISC) xuống 10% (cho xử lý RISC) Như tích hợp thêm vào bên xử lý ghi, cổng vào nhớ cache - Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều ghi (ít thâm nhập nhớ), nhờ thực kỹ thuật ống dẫn liên tục có hiệu (các lệnh có thời gian thực giống có dạng) - Thời gian cần thiết để thiết kế điều khiển Điều góp phần làm giảm chi phí thiết kế - Bộ điều khiển trở nên đơn giản gọn làm cho rủi ro mắc phải sai sót mà ta gặp thường điều khiển Trước điều lợi khơng chối cãi được, kiến trúc RISC có số bất lợi: • Các chương trình dài so với chương trình viết cho xử lý CISC Điều nguyên nhân sau : • Cấm thâm nhập nhớ 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ị • Tập lệnh có lệnh nên lệnh khơng có sẵn phải thay chuỗi lệnh xử lý RISC • Các chương trình dịch gặp nhiều khó khăn có lệnh làm cho có lựa chọn để diễn dịch cấu trúc chương trình gốc Sự cứng nhắc kỹ thuật ống dẫn gây khó khăn • Có lệnh trợ giúp cho ngôn ngữ cấp cao Các xử lý CISC trợ giúp mạnh ngôn ngữ cao cấp nhờ có tập lệnh phức tạp Hãng Honeywell chế tạo máy có lệnh cho động từ ngôn ngữ COBOL Các tiến gần cho phép xếp đặt vi mạch, xử lý RISC nhiều toán tử chuyên dùng Thí dụ, xử lý 860 Intel bao gồm xử lý RISC, làm tính với số lẻ tạo tín hiệu đồ hoạ http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 14 11 KIỂU ĐỊNH VỊ TRONG CÁC BỘ XỬ LÝ RISC Trong xử lý RISC, lệnh số học logic thực theo kiểu ghi tức thì, cịn lệnh đọc ghi vào nhớ lệnh có tốn hạng nhớ thực với kiểu định vị khác 11.1 Kiểu định vị ghi Đây kiểu định vị thường dùng cho xử lý RISC, toán hạng nguồn kết nằm ghi mà số thứ tự nêu lệnh Hình II.5 cho vài ví dụ kiểu ghi dạng lệnh tương ứng vài kiến trúc RISC MIPS Op code6 Nguồn 15 Nguồn 25 SPARC Op code2 Đích5 PowerPC Op code6 Đích5 Nguồn 15 ALPHA Op code6 Nguồn 15 Nguồn 25 Op code6 Đích5 Nguồn 15 Dịch chuyển5 Hàm6 01 Khoảng trống khác8 Nguồn 25 Nguồn 25 Op code mở rộng10 01 01 Op code mở rộng7 Đích5 Table 10 Hình II.5 : Dạng lệnh kiểu định vị ghi - ghi cho vài CPU RISC 11.2 Kiểu định vị tức Trong kiểu này, tốn hạng số có dấu, chứa lệnh Hình II.6 cho ta vài ví dụ dạng lệnh kiểu tức MIPS Op code6 SPARC Op code2 Thanh guồn5 Thanh ghiđích5 ghin- Thanh ghiđích5 Op code6 ALPHA Op code6 Thanh guồn5 PowerPCOp code6 Thanh ghiđích5 ghin- Số có dấu ( tốn hạng tức )16 Thanh guồn5 ghin- 11 Tốn hạng tức có dấu13 Tốn hạng tức > 08 11 Thanh guồn5 Tốn hạng tức có dấu16 ghin- Op codemở rộng7 Thanh ghiđích5 Table 11 Hình II.6 : Dạng lệnh kiểu định vị ghi - tức cho vài CPU RISC 11.3 Kiểu định vị trực tiếp Trong kiểu địa tốn hạng nằm lệnh (hình II.6) Ví dụ, kiểu định vị trực tiếp dùng cho biến hệ điều hành, người sử dụng khơng có quyền thâm nhập biến MIPS Op code6 Thanh ghiđịa chỉ5 Thanh ghisố liệu5 SPARC Op code2 Thanh ghisố liệu5 Op code6 ALPHA Op code6 Thanh ghisố liệu5 Thanh ghiđịa chỉ5 Độ dời có dấu 16 PowerPC Op code6 Thanh ghisố liệu5 Thanh ghiđịa chỉ5 Độ dời có dấu 16 http://cnx.org/content/m30617/1.1/ Độ dời có dấu 16 Thanh ghiđịa chỉ5 11 Độ dời có dấu 13 OpenStax-CNX module: m30617 15 Table 12 Hình II.7 : Dạng lệnh thâm nhập nhớ vài kiến trúc RISC 11.4 Kiểu định vị gián tiếp ghi + độ dời Đây kiểu đặc thù cho kiến trúc RISC Địa tốn hạng tính sau : Địa tốn hạng = Thanh ghi (địa ) + độ dời Ta để ý kiểu định vị trực tiếp trường hợp đặc biệt kiểu ghi (địa chỉ) = Trong xử lý RISC, ghi (R0 R31) mắc vào điện thấp (tức 0) ta có định vị trực tiếp dùng ghi ghi địa 11.5 Kiểu định vị tự tăng Một vài xử lý RISC, ví dụ xử lý PowerPC, dùng kiểu định vị 12 NGÔN NGỮ CẤP CAO VÀ NGƠN NGỮ MÁY Trong chi phí cho hệ thống tin học, bao gồm giá tiền máy tính, giá tiền phần mềm hệ thống phần mềm ứng dụng, chi phí cho triển khai phần mềm ln lớn chi phí mua phần cứng Vì nhà tin học triển khai từ lâu ngôn ngữ gọi ngôn ngữ cấp cao Ngơn ngữ cấp cao dùng lệnh có cấu trúc gần với ngôn ngữ thông thường ngôn ngữ máy Các ngôn ngữ cấp cao tiếng là: FORTRAN cho tính tốn khoa học, COBOL cho quản lý, LISP PROLOG dùng trí tuệ nhân tạo, PASCAL, C, ADA Điểm ngơn ngữ cô động độc lập xử lý Sự độc lập máy tính có nghĩa thi hành kiến trúc phần mềm xử lý, với điều kiện phải có chương trình dịch để dịch chương trình viết ngơn ngữ cấp cao thành chương trình mã máy máy tính sử dụng Ở đây, không quan tâm đến đặc tính ngơn ngữ cấp cao mà quan tâm đến quan hệ ngơn ngữ máy Thậy vậy, muốn cho chương trình ngơn ngữ máy thực cách hữu hiệu chương trình dịch phải dịch hữu hiệu lệnh ngôn ngữ cấp cao thành lệnh mã máy Muốn kiến trúc phần mềm xử lý quan trọng chương trình dịch temp = v[k];v[k] = v[k+1];v[k+1] = temp;0000 1001 1100 0110 1010 1111 0101 10001010 1111 0101 1000 0000 1001 1100 0110 1100 0110 1010 1111 0101 1000 0000 1001 0101 1000 0000 1001 1100 0110 1010 1111 Chương trình ngơn ngữ cấp caoTrình biên dịch(Compiler)Bộ dịch hợp ngữ(Assembler)Chương trình hợp ngữChương trình ngơn ngữ máylw$15, 0($2)lw$16, 4($2)sw$16, 0($2)sw $15, 4($2)Q trình chuyển đổi từ ngôn ngữ cấp cao sang ngôn ngữ máy: biên dịch (Compiler) chuyển đổi ngôn ngữ cấp cao (độc lập với kiến trúc phần mềm) sang dạng hợp ngữ (phụ thuộc kiến trúc phần mềm) Một chương trình dịch hợp ngữ (Assembler) chuyển đổi chương trình viết hợp ngữ (Assembly Language) sang ngôn ngữ máy để máy tính thực chương trình Hình II.10: Mơ tả q trình chuyển đổi từ ngôn ngữ cấp cao sang ngôn ngữ máy Trước đây, kỹ thuật chế tạo xử lý kém, việc định kiến trúc phần mềm cho xử lý nhằm giúp ích cho lập trình hợp ngữ Người ta cố gắng tách kiến trúc phần mềm xử lý khỏi việc thực chương trình dịch hữu hiệu Nhưng dần dần, với tiến công nghệ chế tạo máy tính, người ta bắt đầu nghĩ tới thiết kế kiến trúc phần mềm làm giảm nhẹ cơng việc chương trình dịch ngơn ngữ cấp cao Trong năm 1970, người ta cố gắng giảm bớt chi phí phát triển phần mềm cách thiết kế kiến trúc xử lý có chức mà xử lý trước phải dùng phần mềm để thực Do kiến trúc phần mềm mạnh kiến trúc phần mềm máy VAX, thực Máy VAX có nhiều kiểu định vị tập lệnh phong phú sử dụng nhiều kiểu liệu Tuy nhiên, vào đầu năm 1980, với tiến cơng nghệ viết chương trình dịch, người ta xem xét lại kiến trúc phần mềm phức tạp có chuyển hướng chế tạo kiến trúc phần mềm đơn giản hữu hiệu Chính mà máy tính dùng xử lý kiểu http://cnx.org/content/m30617/1.1/ OpenStax-CNX module: m30617 16 RISC (Reduced Instruction Set Computer) đời Với tiến không ngừng cơng nghệ chế tạo máy tính, cơng nghệ viết chương trình dịch cơng nghệ lập trình, người ta tiến tới chế tạo kiến trúc phần mềm hấp dẫn tương lai ***** ˆ HỎI ÔN TẬP VÀ BÀI TẬP CHƯƠNG II 13 CAU ***** Các thành phần hệ máy tính đơn giản Nhiệm vụ bus hệ thống bus hệ máy tính đơn giản? Tại thực tế cần có hệ thống bus vào ra? Mô tả kiểu thi hành lệnh máy tính Tại kiểu thi hành lệnh ghi – ghi dùng nhiều tại? Mô tả kiểu định vị kiểu định vị mà CPU có Cho CPU RISC, kiểu định vị thường dùng nhất? Sự khác biệt CPU RISC CPU CISC? Trong CPU Power PC, giả sử mã tác vụ lệnh ADD 011010 Viết lệnh mã máy tương ứng với ADD R1, R19, #-15673 http://cnx.org/content/m30617/1.1/

Ngày đăng: 27/03/2022, 00:57

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

Tài liệu liên quan