Kiến trúc máy tính - Bài 1: Giới thiệu

Tài liệu Kiến trúc máy tính - Bài 1: Giới thiệu: 1KIẾN TRÚC MÁY TÍNH Nguyễn Hồng Sơn 2Bài 1 GIỚI THIỆU Kiến trúc & Tổ chức máy tính 3Tổ chức và Kiến trúc Hai thuật ngữ nhằm mô tả một hệ thống máy tính.  Kiến trúc đề cập đến các thuộc tính mà người lập trình nhận thấy được, ảnh hưởng trực tiếp đến thực thi chương trình (Instruction set, số bit biểu diễn data type, cơ cấu I/O, addressing)  Tổ chức máy tính đề cập đến các đơn vị hoạt động và sự liên kết giữa chúng, thực hiện các đặc tả kiến trúc (chi tiết phần cứng, control signals, interfaces, memory technology)  Ví dụ xây dựng multiply instruction 4Cấu trúc và Chức năng  Cấu trúc: cụ thể hóa các thành phần và các mối liên hệ giữa các thành phần, là hiện thực của tổ chức máy tính.  Chức năng: sự hoạt động của mỗi thành phần trong cấu trúc. 5Chức năng máy tính  Data processing  Data storage  Data movement (I/O, peripheral, communicati...

pdf235 trang | Chia sẻ: Khủng Long | Lượt xem: 1109 | Lượt tải: 0download
Bạn đang xem trước 20 trang mẫu tài liệu Kiến trúc máy tính - Bài 1: Giới thiệu, để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên
1KIEÁN TRUÙC MAÙY TÍNH Nguyeãn Hoàng Sôn 2Baøi 1 GIÔÙI THIEÄU Kieán truùc & Toå chöùc maùy tính 3Toå chöùc vaø Kieán truùc Hai thuaät ngöõ nhaèm moâ taû moät heä thoáng maùy tính.  Kieán truùc ñeà caäp ñeán caùc thuoäc tính maø ngöôøi laäp trình nhaän thaáy ñöôïc, aûnh höôûng tröïc tieáp ñeán thöïc thi chöông trình (Instruction set, soá bit bieåu dieãn data type, cô caáu I/O, addressing)  Toå chöùc maùy tính ñeà caäp ñeán caùc ñôn vò hoaït ñoäng vaø sự lieân keát giöõa chuùng, thöïc hieän caùc ñaëc taû kieán truùc (chi tieát phaàn cöùng, control signals, interfaces, memory technology)  Ví duï xaây döïng multiply instruction 4Caáu truùc vaø Chöùc naêng  Caáu truùc: cuï theå hoùa caùc thaønh phaàn vaø các mối lieân heä giữa các thành phần, laø hieän thöïc cuûa toå chöùc maùy tính.  Chöùc naêng: sự hoaït ñoäng cuûa moãi thành phần trong caáu truùc. 5Chöùc naêng maùy tính  Data processing  Data storage  Data movement (I/O, peripheral, communication)  Control 6Cô caáu vaän chuyeån data Cô caáu ñieàu kieån Phöông tieän xöû lyù data Phöông tieän löu tröõ data Nguoàn vaø ñích cuûa data 7 8Caùc thaønh phaàn trong caáu truùc maùy tính Coù boán thaønh phaàn chính: •CPU: Ñieàu khieån caùc hoaït ñoäng vaø thöïc hieän caùc chöùc naêng xöû lyù data •Main memory: Löu tröõ data •I/O: vaän chuyeån data giöõa maùy tính vôùi beân ngoaøi •System interconnection: cung caáp cô cheá truyeàn thoâng giöõa ba thaønh phaàn treân 9Maùy tính •Löu tröõ •Xöû lyù Ngoaïi vi Communication line MT System Interconnection Main memory I/O CPU 10  Moät maùy tính coù theå coù moät hay nhieàu CPU  Dung löôïng boä nhôù laø tuøy choïn  Cô caáu I/O coù qui moâ khaùc nhau tuøy theo nhu caàu 11 Thaønh phaàn phöùc taïp nhaát laø CPU  Control unit ALU (Arithmetic and Logic Unit) Register CPU Interconnection 12 CPU CPU bus Registers ALU Control unit CU Control Unit Regisers vaø Decoders Conrol memory Sequencing logic 13 Sô löôïc lòch söû phaùt trieån  Theá heä thöù nhaát:  Ñeøn chaân khoâng (vacuum tubes)  ENIAC  Von Neumann/ Alan Turing 14 Máy tính ENIAC 15 Sô löôïc lòch söû phaùt trieån:Máy tính ENIAC ENIAC (Electronic Numerical Integrator and Computer) là máy tính điện tử số đầu tiên do Giáo sư Mauchly và người học trò Eckert tại Đại học Pennsylvania thiết kế vào năm 1943 và được hoàn thành vào năm 1946. Đây là một máy tính khổng lồ với thể tích dài 20 mét, cao 2,8 mét và rộng vài mét. ENIAC bao gồm: 18.000 đèn điện tử, 1.500 công tắc tự động, cân nặng 30 tấn, và tiêu thụ 140KW giờ. Nó có 20 thanh ghi 10 bit (tính toán trên số thập phân). Có khả năng thực hiện 5.000 phép toán cộng trong một giây. Công việc lập trình bằng tay bằng cách đấu nối các đầu cắm điện và dùng các ngắt điện. 16 Sô löôïc lòch söû phaùt trieån(tt)  Theá heä thöù hai:  Transistor  Multiplexer  Laäp trình möùc cao  Phaàn meàm heä thoáng 17 Sô löôïc lòch söû phaùt trieån (tt)  Theá heä thöù 3:  Maïch tích hôïp (Integrated Circuits)  SSI, MSI  Microelectronics  IBM/360, PDP-8( minicomputer ñaàu tieân, duøng bus)  Luaät Moore  Số lượng transistors trên một microchip tăng lên gấp đôi sau mỗi 18-24 tháng.  Tốc độ microprocessor tăng lên gấp đôi sau mỗi 18-24 tháng.  Giá thành trên một microchip giảm một nửa sau mỗi 18-24 tháng Tham khảo: 18 Sô löôïc lòch söû phaùt trieån (tt)  Theá heä thöù 4:  LSI, VLSI, ULSI  Semiconductor Memory  Microprocessor  Caùc theá heä sau 19 20 21 Sơ đồ kiến trúc của PIII 22 Intel Core 2 Dual 23 Naâng cao chaát löôïng  Toác ñoä boä vi xöû lyù  Döï ñoaùn nhaùnh  Phaân tích luoàng soá lieäu  Thöïc thi coù döï baùo  Caân ñoái hieäu suaát  Caûi thieän toå chöùc vaø caáu truùc chip. 24 25 26 Giaûi phaùp caân ñoái hieäu suaát  Boä nhôù lôùn hôn  Cache  Lieân keát CPU-memory toác ñoä cao  Thieát keá  Toác ñoä giöõa caùc thieát bò  Caùc öùng duïng vaø thieát bò ngoaïi vi 27 Caûi thieän toå chöùc vaø caáu truùc chip  Toác ñoä vaø clock rate  Kích thöôùc vaø toác ñộ cache  Kieán truùc song song  Caùc heä quaû  Coâng suaát  Treã (RC delay)  Treã truy xuaát boä nhôù (Memory latency) 28 Baøi 2 STORED-PROGRAM VAØ GENERAL-PURPOSE COMPUTER 29 Söï xuaát hieän stored-program vaø general-purpose hardware  Moät taäp nhoû caùc linh kieän logic cô baûn coù theå keát hôïp vôùi nhau theo caùc caùch khaùc nhau ñeå löu tröõ döõ lieäu nhò phaân vaø thöïc hieän caùc pheùp toaùn soá hoïc vaø luaän lyù treân döõ lieäu ñoù.  Khi caàn moät tính toaùn naøo ñoù, moät caáu hình keát noái caùc thaønh phaàn logic ñöôïc thieát keá vaø thöïc hieän. Coù theå hieåu ñoù chính laø daïng laäp trình. 30 Tuaàn töï caùc chöùc naêng soá hoïc vaø luaän lyù Phaàn cöùng ñöôïc xaây döïng töø caùc thaønh phaàn logic Data Caùc keát quaû Laäp trình phaàn cöùng (hardware programming) 31 Söï xuaát hieän stored-program vaø general-purpose hardware (tt)  Neáu taát caû caùc öùng duïng ñeàu thöïc hieän baèng hardwired progam => baát tieän vaø khaû naêng cuûa maùy tính raát haïn cheá  Xaây döïng caùc chöùc naêng soá hoïc vaø luaän lyù toång quaùt (general-purpose hardware)  Hoaït ñoäng döïa vaøo tín hieäu ñieàu khieån 32 Bieân dòch Caùc chöùc naêng soá hoïc vaø luaän lyù toång quaùt Caùc maõ leänh (instruction codes) Taäp tín hieäu ñieàu khieån DATA Caùc keát quaû 33 Phaùt sinh tín hieäu ñieàu khieån  Toaøn boä chöông trình laø moät tuaàn töï goàm nhieàu böôùc.  Moãi böôùc caàn tieán haønh moät vaøi pheùp soá hoïc vaø luaän lyù treân data naøo ñoù.  Moãi böôùc caàn moät taäp tín hieäu töông öùng  Moät code duy nhaát cho moät taäp tín hieäu coù theå  Moät segment töông öùng trong phaàn cöùng toång quaùt chaáp nhaän moät taäp tín hieäu ñieàu khieån ñöôïc phaùt ra. 34 Phaùt sinh tín hieäu ñieàu khieån(tt)  Laäp trình baây giôø: thay vì noái daây phaàn cöùng cho moãi chöông trình môùi, chæ caàn cung caáp moät tuaàn töï môùi cuûa caùc code  Moãi code thöïc ra laø moät instruction, ñöôïc phaàn bieân dòch tieáp nhaän vaø phaùt ra taäp tín hieäu ñieàu khieån töông öùng.  Tuaàn töï caùc instruction ñoù laø software 35  Data vaø instruction ñöôïc löu tröõ trong moät boä nhôù ñoïc-ghi.  Noäi dung trong boä nhôù ñöôïc ñònh vò theo vò trí, khoâng caàn bieát kieåu data laø gì.  Thöïc thi chöông trình theo kieåu tuaàn töï, töø instruction naøy ñeán instruction keá tieáp. Ba khaùi nieäm cô baûn veà stored-program 36 I/O module  Data vaø instruction phaûi ñöôïc ñöa vaøo trong heä thoáng qua module nhaäp  Caàn laáy hay thoâng baùo keát quaû tính toaùn thoâng qua module xuaát  Goïi chung laø I/O module 37 Boä nhôù chính  Thieát bò nhaäp ñöa data vaø inst vaøo theo tuaàn töï, nhöng chöông trình khoâng phaûi thöïc thi theo tuaàn töï moät caùch cöùng nhaéc.  Hoaït ñoäng tính toaùn coù theå phaûi truy xuaát nhieàu döõ kieän hôn taïi moät thôøi ñieåm theo moät tuaàn töï khoâng theå döï ñoaùn ñöôïc. =>caàn coù nôi löu tröõ taïm thôøi caû data vaø inst, ñoù laø boä nhôù chính 38 CPU MAR MBR I/O AR I/O BR : Instruction Instruction Instruction : Data Data Boä nhôù 0 1 2 : Buffer I/O module 39 Bài 3 KIẾN TRÚC VON NEUMANN VÀ KIẾN TRÚC HARVARD 40 KIẾN TRÚC VON NEUMANN  ENIAC (Electronic Numerical Integrator And Computer) laø maùy tính ñieän töû daïng general- purpose ñaàu tieân.  ENIAC toû ra naëng neà vaø ñôn ñieäu  Caûi tieán töø yù töôûng stored-program, nhaø toaùn hoïc John von Neumann thieát keá ra maùy tính môùi goïi laø IAS (Institute for Advanced Studies) laø khuoân maãu cho taát caû caùc maùy tính general-purpose sau naøy. 41 42 Boä nhôù chính ALU Program Control Unit Thieát bò I/O Caáu truùc cuûa maùy tính IAS 43 Maùy von Neumann  Main memory: löu tröõ caû data vaø instruction  ALU: thao taùc treân soá lieäu nhò phaân  PCU: bieân dòch vaø taïo ñieàu kieän thöïc thi caùc inst  Thieát bò I/O ñöôïc ñieàu khieån bôûi CU 44 Maùy von Neumann  Boä nhôù chöùa 1000 vò trí hay töø nhôù (word), moãi word coù 40 bit.  Moãi soá (data)ñöôïc bieåu dieãn goàm 1bit daáu vaø 39 bit giaù trò  Moãi word coù theå chöùa hai inst 20 bit  Moät inst goàm 8 bit op code vaø 12 bit ñòa chæ 45 Giaù trò Op code addr Op code addr 0 7 8 19 20 28 39 0 1 39 Sign bit Number word Instruction word Instruction traùi Instruction phaûi 46 AC MQ Caùc maïch soá hoïc-luaän lyù MBR Thieát bò I/O Main memory IBR IR PC MAR Caùc maïch ñieàu khieån ALU Central Processing Unit : control signals Program Control Unit address Instructions vaø data KIEÁN TRUÙC MÔÛ ROÄNG CUÛA IAS 47 Maùy von Neumann (tt)  Conrol Unit ñieàu haønh IAS baèng caùc laáy caùc inst töø boä nhôù vaø thöïc thi moãi luùc moät inst.  Caû ALU vaø PCU ñeàu coù caùc vò trí löu tröõ goïi laø caùc thanh ghi:  MBR (Memory Buffer Register)  MAR (Memory Address Register)  IR (Instruction Register)  IBR (Instruction Buffer Register)  PC (Program Counter)  AC&MQ (Accumulation & Multiplier-Quotient) 48 start Inst keá trong IBR? MAR PC MBRM(MAR) Coù yeâu caàu instruction traùi? IRIBR(0:7) MARIBR(8:19) IRMBR(20:27) MARMBR(28:39) IBRMBR(20:39) IRMBR(0:7) MARMBR(8:19) PCPC+1 AC≥0? PCMAR ACMBR MBRM(MAR) ACAC+MBR MBRM(MAR) y n n y y n Giaûi maõ inst trong IR ACM(X) Goto M(X,0:19) If AC ≥0 then goto M(X,0:19 ACAC+M(X) Chu kyø laáy inst Chu kyø thöïc thi 49 Kieán truùc Hardvard  Kieán truùc Harvard taùch rieâng boä nhôù löu tröõ chöông trình vaø döõ lieäu. Ñoä roäng Bus chöông trình thay ñoåi linh ñoäng vaø toái öu cho moät thieát bò ñaëc bieät naøo ñoù. Ñoä roäng bus döõ lieäu thöôøng laø 8 hay 16 bit. Kieán truùc naøy cho pheùp truy xuaát ñoàng thôøi caû chöông trình vaø döõ lieäu.  Kieán truùc Harvard coù moät vaøi öu ñieåm: moät long word inst chæ chieám moät vò trí nhôù, caùc single word inst coù theå taêng toác xöû lyù vì maõ leänh vaø döõ lieäu lieân quan ñeàu chöùa trong moät töø nhôù. Việc thöïc thi chæ thò cuõng nhanh vì boä nhôù chöông trình vaø boä nhôù döõ lieäu ñeàu coù theå truy xuaát ñoàng haønh.  Nhieàu DSP coù kieán truùc Hardvard 50 Kieán truùc Harvard 51 Kieán truùc Harvard  Moät soá CPU coù kieán truùc hoãn hôïp giöõa hai kieán truùc. Caáu truùc beân trong core laø Harvard. Core cuûa CPU ñöôïc ñeäm töø bus ngoøai qua moät cache toác ñoä cao vaø moät boä ñieàu khieån cache. Ñeå naâng phaåm chaát, beân trong CPU taùch bieät bus chöông trình vaø bus döõ lieäu, moãi bus ñeàu coù cache rieâng.  Boä ñieàu khieån data cahe giaùm saùt bus ñeå caäp nhaät baûn sao trong cache neáu caùc thieát bò khaùc treân bus thay ñoåi boä nhôù chính. Tuy nhieân, boä nhôù chæ thò khoâng theå caäp nhaät, chæ coù theå ñoïc chöông trình trong cache vaøø khoâng theå ghi vaøo. Ñieàu naøy khieán cho kieán truùc Harvard khoâng theå thöïc hieän self modifying code. 1Bài 4 KIẾN TRÚC TẬP CHỈ THỊ ISA (Instruction Set Architecture) Nguyễn Hồng Sơn 2Tập chỉ thị  Tập hợp các chỉ thị khác nhau mà bộ xử lý có thể thực thi 3Các đặc trưng  Các thành phần của một chỉ thị  Biểu diễn chỉ thị  Loại chỉ thị  Số địa chỉ  Đặc trưng thiết kế 4Các thành phần  Mã lệnh (Operation code)  Toán hạng nguồn (Source operand)  Toán hạng đích (Result operand)  Bộ nhớ chính hay bộ nhớ ảo  Thanh ghi  Thiết bị I/O  Tham chiếu chỉ thị kế (Next instruction reference)  Tường minh  Không tường minh 5Biểu diễn chỉ thị  Một tuần tự bit  Biểu diễn mỗi thành phần như thế nào Opcode Operand Operand 6Loại chỉ thị  Tính toán  Số học  Luận lý  Lưu trữ dữ liệu: memory  Di chuyển dữ liệu: I/O  Điều khiển: kiểm tra, rẽ nhánh, chuyển điều khiển 7Ví dụ rẽ nhánh 8Gọi thủ tục 9Số lượng địa chỉ  Bao nhiêu địa chỉ được chứa trong một chỉ thị  Địa chỉ được biểu diễn tường minh hay không tường minh  địa chỉ bộ nhớ  thanh ghi, bộ tích lũy (accumulator)  chỉ thị không địa chỉ 10 Các đặc trưng thiết kế  Tác vụ của lệnh  Kiểu toán hạng  Các thanh ghi  Chế độ địa chỉ 11 Các kiểu toán hạng  Địa chỉ  Con số  nguyên (integer)  dấu chấm động (floating point)  thập phân, nhị phân  Ký tự  Luận lý 12 Tập chỉ thị được đo lường qua vài yếu tố  Kích thước lưu trữ mà chương trình cần  Độ phức tạp của tập chỉ thị cũng như độ phức tạp của các tác vụ  Chiều dài của chỉ thị  Tổng số chỉ thị  Bao nhiêu thanh ghi và tổ chức các thanh ghi như thế nào 13 Các cân nhắc thiết kế  Chỉ thị ngắn hay dài  Chiều dài cố định hay thay đổi (cố định dễ giải mã nhưng lãng phí)  Tổ chức bộ nhớ (địa chỉ hóa theo byte hay không)  Chỉ thị có chiều dài cố định không nhất thiết phải cố định số toán hạng (expanding opcode)  Chế độ địa chỉ hóa  Thứ tự lưu giữ các byte của các từ có nhiều byte như thế nào (little endian và big endian) 14 15 Hỗ trợ lưu trữ bên trong CPU  Kiến trúc stack: dùng một stack để thực thi chỉ thị, các toán hạng được ngầm định ở đỉnh stack, không thể truy xuất ngẫu nhiên, khó sinh mã hiệu quả.  Kiến trúc accumulator: một toán hạng ngầm định (không tường minh) trong accumulator, tối thiểu độ phức tạp nhưng lưu lượng bộ nhớ lớn.  Kiến trúc thanh ghi mục đích tổng quát (GPR: General Purpose Register): dùng một số thanh ghi, truy xuất nhanh. Có hai đặc trưng chính: số lượng toán hạng và cách thức địa chỉ hóa toán hạng 16 Chế độ địa chỉ (addressing mode) Immediate addressing Direct addressing Indirect addressing Register addressing Register indirect addressing Displacement addressing Based addressing Indexed addressing Stack addressing Các chế độ cải tiến 17 Địa chỉ tức thời (Immediate addressing)  Giá trị tham chiếu nằm ngay trong chỉ thị  Không có tham chiếu bộ nhớ để lấy dữ liệu  Nhanh  Ví dụ ADD 5  Cộng 5 vào nội dung của thanh ghi AC  5 là toán hạng 18 Địa chỉ trực tiếp (Direct addressing)  Toán hạng là địa chỉ của giá trị tham chiếu  Tham chiếu một vị trí bộ nhớ để truy xuất dữ liệu  Ví dụ ADD 3BF  Cộng nội dung của ô nhớ 3BF với nội dung trong AC  3BF là địa chỉ hiệu quả (effective address) 19 Nội dung tham chiếu Opcode Address Memory 3BF 20 Địa chỉ gián tiếp (indirect addresing)  Toán hạng là địa chỉ của con trỏ chỉ đến dữ liệu  Địa chỉ hiệu quả chính là con trỏ  Ví dụ ADD 38F  Cộng nội dung tại ô nhớ có địa chỉ được chứa trong ô nhớ 38F với nội dung trong AC  38F không phải là địa chỉ hiệu quả. 21 Opcode Address 3BF Nội dung tham chiếu Memory 38F 3BF 22 Địa chỉ thanh ghi (Register addressing)  Toán hạng là tên thanh ghi (địa chỉ thanh ghi)  Địa chỉ hiệu quả là thanh ghi  Truy xuất nhanh  Ví dụ ADD R1 cộng nội dung thanh ghi R1 với nội dung của AC 23 opcode Địa chỉ thanh ghi Nội dung tham chiếu Các thanh ghi 24 Địa chỉ gián tiếp thanh ghi (register indirect addressing)  Kết hợp địa chỉ thanh ghi và địa chỉ gián tiếp  Dùng thanh ghi để chứa con trỏ chỉ đến vị trí chứa giá trị tham chiếu 25 opcode Địa chỉ thanh ghi con trỏ chỉ đến nội dung tham chiếu Các thanh ghi Nội dung tham chiếu Bộ nhớ 26 Địa chỉ dùng độ dời (displacement addressing)  Phần toán hạng chứa hai giá trị:  Địa chỉ  Thanh ghi giữ độ dời (offset)  Địa chỉ hiệu quả = địa chỉ + độ dời 27 opcode thanh ghi địa chỉ độ dời Các thanh ghi Nội dung tham chiếu Bộ nhớ 28 Relative addressing  Từ displacement addressing nếu thanh ghi là PC thì gọi là địa chỉ quan hệ (relative addressing);  Lấy nội dung từ ô nhớ tại vị trí "địa chỉ" tính từ vị trí hiện hành được chỉ ra trong thanh ghi PC.  Ví dụ LD A nạp nội dung từ ô nhớ A+(PC) vào thanh ghi AC 29 Địa chỉ dùng thanh ghi nền (Base-register addressing)  Giá trị thứ nhất là độ dời  Thanh ghi chứa con trỏ chỉ đến địa chỉ nền  Thanh ghi có thể là tường minh hay không tường minh (ngầm) 30 Indexed addresing  Giá trị địa chỉ trong chỉ thị chứa địa chỉ nền  Thanh ghi chứa độ dời (offset)  Địa chỉ hiệu quả= địa chỉ nền + độ dời  Thích hợp cho truy xuất mảng  Địa chỉ truy xuất = địa chỉ nền + độ dời trong thanh ghi R  R++ 31 Địa chỉ ngăn xếp (stack addressing)  Các toán hạng được ngầm định trên đỉnh stack  Ví dụ ADD Lấy hai giá trị trên đỉnh stack và thực hiện cộng hai giá trị với nhau 32 Các chế độ địa chỉ cải tiến  Có thể kết hợp các chế độ địa chỉ với nhau.  Ví dụ indirect indexed addressing, indirect based register adressing ... 33 Bài tập 1. Giải thích và cho ví dụ các chế độ địa chỉ cải tiến -Indirect indexed addressing -Indirect based register adressing 2. Tìm hiểu các chế độ địa chỉ trong máy Pentium 1Bài 5 CẤU TRÚC BỘ XỬ LÝ VÀ THỰC THI CHƯƠNG TRÌNH Nguyễn Hồng Sơn Công việc của CPU  CPU phải  Fetch instructions  Interpret instructions  Fetch data  Process data  Write data 2CPU với system bus Cấu trúc bên trong của CPU 3Tổ chức các thanh ghi  CPU cần có các vùng nhớ tạm để làm việc, gọi là các thanh ghi (registers)  Số lượng và chức năng thay đổi tùy vào thiết kế của bộ xử lý.  Là một trong các quyết định thiết kế quan trọng.  Mức cao nhất trong phân cấp bộ nhớ. User-visible register User-visible register là thanh ghi có thể được tham chiếu qua ngôn ngữ máy, bao gồm các loại:  General Purpose: đa chức năng, chứa operand của chỉ thị  Data: chỉ chứa data, không được dùng để tính toán địa chỉ.  Address: dùng cho chế độ địa chỉ như segment pointer, index register, stack pointer  Condition Codes: chứa các mã điều kiện (còn gọi là các flag) 4Control & status register  Có một số thanh ghi được dùng để điều khiển hoạt động của CPU  Program Counter  Instruction Decoding Register  Memory Address Register  Memory Buffer Register  Tất cả các thiết kế đều có một hay tập thanh ghi gọi là PSW (Program Status Word) PSW  PSW chứa các mã điều kiện cùng với các thông tin trạng thái khác. Các field hay flag phổ biến gồm:  Sign  Zero  Carry  Equal  Overflow  Interrupt enable/disable  Supervisor: chỉ mode là user hay supervisor 5Supervisor mode  Các chỉ thị đặc quyền chỉ có thể thực thi trong supervisor mode.  Vùng nhớ đặc biệt chỉ có thể truy xuất trong supervisor mode  Được dùng bởi hệ điều hành  Không khả dụng đối với các chương trình của user. Ví dụ tổ chức thanh ghi 6 Một chương trình ñược thực thi gồm một tập chỉ thị được lưu giữ trong bộ nhớ.  CPU coù nhiệm vụ thực thi từng chỉ thị được chỉ ñịnh trong chương trình  Quùa trình xử lyù chỉ thị gồm coù hai bước:  CPU đñọc chỉ thị từ bộ nhớ  CPU thực thi chỉ thị, coù thể gồm một số hoạt ñộng Tổng Quan Thực thi chương trình Thực thi chương trình  Chu kỳ chỉ thị (instruction cycle): Quá trình xử lý cho một chỉ thị.  Chu kỳ lấy chỉ thị  Chu kỳ thực thi 7bắt đầu lấy chỉ thị kế thực thi chỉ thị Treo máy Chu kỳ lấy chỉ thị Chu kỳ thực thi Chu kỳ chỉ thị cơ bản Chu kỳ lấy chỉ thị và thực thi  Bắt ñầu mỗi chu kỳ chỉ thị, CPU nạp chỉ thị từ bộ nhớ  PC (program counter): laø thanh ghi hướng dẫn chọn chỉ thị kế tiếp  Mặc ñịnh sau mỗi lần nạp, PC sẽ tăng một ñơn vị (chỉ tới chỉ thị kế tiếp theo tuần tự trong chương trình)  Chị thị được nạp vaøo thanh ghi IR (instruction register) 8Chu kỳ lấy chỉ thị và thực thi  Chỉ thị tồn tại ở dạng mã nhị phân, chỉ cho CPU biết noù phải laøm công việc gì.  CPU sẽ phiên dịch (giải mã lệnh) ñể nhận biết công việc phải laøm.  Caùc công việc thường rơi vaøo một trong bốn nhoùm:  CPU-Memory  CPU-I/O  Xử lyù data  Điều khiển: ví dụ thay ñổi tuần tự Chu kỳ lấy chỉ thị và thực thi  Việc thực thi một chỉ thị cụ thể liên quan đeán nhiều công việc.  Một chu kỳ thực thi coù thể coù nhiều tham chiếu đến bộ nhớ.  Một chu kỳ thực thi coù thể coù nhiều tham chiếu đến I/O  Một chu kỳ thực thi coù thể coù nhiều tham chiếu đến bộ nhớ vaø cả I/O 9Các trạng thái trong một chu kỳ chỉ thị  (1)Tính toaùn ñịa chỉ của chỉ thị: xaùc ñịnh ñịa chỉ của chỉ thị kế tiếp, thường laø cộng một hằng số vaøo ñịa chỉ của chỉ thị trước.  (2)Lấy lệnh  (3)Giải mã chỉ thị: phân tích ñể xaùc ñịnh công việc phải laøm vaø toaùn hạng ñược duøng.  (4)Tính toaùn ñòa chỉ toaùn hạng: nếu công việc cần lấy thông số (data) từ bộ nhớ hay I/O.  (5)Lấy toaùn hạng  (6)Xử lý trên dữ liệu theo công việc ñược chỉ ñịnh.  (7)Lưu toaùn hạng (data) 1 3 2 4 6 4 5 7CPU truy xuất MM hay I/O Hoạt đñộng beân trong CPU Vetor hay string chỉ thị kế nhiều kết quả nhiều toán hạng 10 Các trạng thái  Trên một số maùy tính, một chỉ thị cuï thể chỉ ñịnh một toaùn tử thực hiện trên một vector (mảng một chiều) hay chuỗi của caùc kyù tự. Điều naøy liên quan ñến lặp ñi lặp lại việc lấy dữ liệu hay lưu trữ dữ liệu. Ví dụ máy giả thuyết  Từ nhớ 16 bit  Instruction: 4 bit mã vaø 12 bit ñịa chỉ  Data: 1 bit dấu vaø 15 bit ñịnh lượng  Gồm coù caùc thanh ghi:  PC  IR  AC(accumulator): thanh ghi tạm  4 trong số 16 mã lệnh cuï thể  0001: nạp nội dung từ bộ nhớ vaøo AC  0010: ghi nội dung AC vaøo bộ nhớ  0101: cộng nội dung từ bộ nhớ với nội dung của AC.  0110: nhân nội dung từ bộ nhớ với nội dung của AC. 11 Ví dụ  Chỉ thị được cất giữ từ vị trí 0x300 trong bộ nhớ.  Trình baøy hoạt ñộng cộng nội dung tại ñịa chỉ 0x940 với nội dung của 0x941, lưu kết quả tại 0x941.  Chương trình  Nạp nội dung từ 0x940 vaøo AC  Cộng nội dung của 0x941 với AC  Ghi nội dung của AC vaøo 0x941  Như vậy coù 3 chu kỳ nạp vaø 3 chu kỳ thực thi. 1940 5941 2941 0003 0002 1940 300300 301 302 940 941 PC AC IR 1940 5941 2941 0003 0002 0003 1940 300 PC AC IR 300 301 302 940 941 Bộ nhớ Các thanh ghi 12 1940 5941 2941 0003 0002 0003 5941 301300 301 302 940 941 PC AC IR 1940 5941 2941 0003 0002 0005 5941 301 PC AC IR 300 301 302 940 941 3h + 2h=5h 1940 5941 2941 0003 0002 0005 2941 302300 301 302 940 941 PC AC IR 1940 5941 2941 0003 0005 0005 2941 302 PC AC IR 300 301 302 940 941 13 Ví dụ 2  Trình bày các chu kỳ thực hiện phép tính (3+2)*5 (5 tai 942), ghi kết quả tại 0x942  Tất cả sinh viên tự làm bài. 1940 5941 6942 0003 0002 1940 300300 301 302 303 940 941 942 PC AC IR 0005 2942 1940 5941 6942 0003 0002 1940 300300 301 302 303 940 941 942 PC AC IR 0005 2942 0003 14 Bài tập về nhà  Trình baøy tất cả caùc chu kỳ chỉ thị khi tính (2+3)*(3+4) trên máy giả thuyết, cho 0004 chứa tại 0x942, ghi kết quả tại 0x942.  Vieát tuaàn töï chæ thị thöïc hieän pheùp tính sau trên ma ùy IAS (maùy tính Von Neumann) (4+2)*5, ghi kết quả tại vị trí 202h Hãy trình baøy taát caû caùc chu kyø chỉ thị khi thöïc hieän pheùp tính trên. Cho mã chöơng trình ñöơïc naïp vaøo boä nhớ baét ñaàu taïi vị trí 100h vaø dữ lieäu ñược caát giữ baét ñaàu töø vị trí 200h. 1THỰC THI CHƯƠNG TRÌNH CÓ NGẮT BAØI 6 2Khái niệm Ngắt (Interrupt)  Hầu hết các máy tính đều có cơ chế cho phép ngắt quá trình xử lý bình thường của CPU.  Có một số loại ngắt phổ biến:  Program: phát sinh bởi điều kiện, là kết quả thực thi một chỉ thị, như tràn số học, chia 0  Timer: phát sinh bởi một bộ định thời trong CPU, cho phép OS thực hiện một chức năng thông thường nào đó.  I/O: phát sinh bởi I/O controller, báo hoàn tất một công việc hay thông báo một điều kiện lỗi nào đó.  Lỗi phần cứng 3Khái niệm Ngắt (Interrupt)  Ngắt thể hiện đặc tính cấu trúc  Các thiết bị ngoài hoạt động chậm hơn rất nhiều so với CPU lãng phí CPU  Ví dụ hoạt động in  Ngắt là một phương thức nhằm cải thiện hiệu suất, CPU sẽ chuyển đến thực thi chỉ thị khác giữa lúc hoạt động I/O đang diễn ra. 4Chương trình I/O tiêu biểu  Một chương trình I/O gồm có ba phần cơ bản:  Tuần tự các chỉ thị nhằm chuẩn bị cho hoạt động I/O thực sự  Lệnh I/O, khi gọi lệnh này chương trình phải đợi thiết bị I/O thực hiện chức năng được yêu cầu. Chương trình có thể đợi theo cách lặp lại thao tác kiểm tra để xác định hoạt động I/O đã được thực hiện hay chưa.  Tuần tự chỉ thị làm thủ tục hoàn tất hoạt động I/O, ví dụ dựng các cờ, thiết lập thông báo 5Hoạt động của chương trình không ngắt Call write Call write I/O command Lộ trình thực thi I/O programMain program end 1 2 3 4 5 6Hoạt động của chương trình không ngắt  Hoạt động I/O liên quan đến các thiết bị ngoài với các thao tác cơ-điện mất nhiều thời gian.  Chương trình I/O phải đợi cho các thao tác I/O hoàn tất. => Chương trình chính sẽ phải dừng lại mỗi khi gặp một chỉ thị I/O (ví dụ write) trong một thời gian khá dài. 7Hoạt động của chương trình có ngắt Call write Call write I/O command Interrupt Handler end Thời gian thao tác I/O kết thúc trước khi gặp chỉ thị I/O mới 1 2a 2b 3a 3b 4 5 Lộ trình thực thi 8Call write Call write I/O command Interrupt Handler end Thời gian thao tác I/O chưa kết thúc đã gặp chỉ thị I/O mới Lộ trình thực thi 1 3 5 2 4 Hoạt động của chương trình có ngắt 9Thủ tục ngắt tổng quát  Phát sinh tín hiệu ngắt: vi9 du: từ I/O module  Đáp ứng ngắt từ CPU: treo, chuyển 1 2 i i+1 M Chương trình Interrupt handler phục hồi thực thi Int req 10 Chu kỳ chỉ thị có ngắt  Chương trình chính không chứa mã lệnh chuyên trách về ngắt  CPU & OS chịu trách nhiệm  Chu kỳ ngắt (interrupt cycle): CPU kiểm tra phát hiện int req. 11 bắt đầu nạp chỉ thị kế thực thi kiểm tra và xử lý ngắt kê9t thu9c ngắt bị cấm Cho phép ngắt Chu kỳ ngắt Chu kỳ thực thi Chu kỳ lấy chỉ thị 12 1 3 2 4 6 4 5 7 CPU truy xuất MM hay I/O Hoạt động bên trong CPU Vetor hay string chỉ thị kế nhiều kết quả nhiều toán hạng kiểm tra ngắt xử lý ngắt Không ngắt Sơ đồ trạng thái trong chu kỳ chỉ thị 13 Hoạt động ngắt và Interrupt Handler  Nếu một ngắt xảy ra, bộ xử lý tiến hành:  Dừng hoạt động thực thi hiện hành và lưu ngữ cảnh.  Gán địa chỉ của Int handler vào thanh ghi PC  Thực thi diễn ra trên chương trình phục vụ ngắt  Int Handler ∈ OS  Xác định bản chất ngắt  Thực hiện các thao tác cần thiết 14 Đánh giá 1 4 5 2 4 5 3 cpu đợi cpu đợi Thao tác I/O Thao tác I/O 1 4 2a 5 2b 4 3a 5 3b Thao tác I/O Thao tác I/O 15 1 4 5 2 4 5 3 cpu đợi cpu đợi Thao tác I/O Thao tác I/O 1 4 2 5 4 3 5 Thao tác I/O Thao tác I/O cpu đợi cpu đợi 16 Đa ngắt  Có thể có nhiều ngắt xảy ra đồng thời  Có hai giải pháp kiểm soát:  cấm các ngắt khác khi đang xử lý một ngắt nào đó  xử lý ưu tiên 17 Chương trình chính Int Hand Int Hand 18 Int Hand Int Hand 19 Ví dụ  Ba thiết bị ngoại vi:  Line (ưu tiên 1) thời gian cần 10  Đĩa (ưu tiên 2) thời gian cần 10  In (ưu tiên 3) thời gian cần 30  bắt đầu lúc t=0, ngắt in lúc t=10, ngắt thông tin lúc t=15, ngắt đĩa lúc t=20  Trình bày diễn biến của các ngắt? 20 t = 60 11 Bài 7 BIỂU DIỄN VÀ TÍNH TOÁN SỐ HỌC TRONG MÁY TÍNH Nguyễn Hồng Sơn Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 2 NỘI DUNG  ALU (Arithmetic and Logical Unit)  Biểu diễn và tính toán số nguyên (fixed point)  Biễu diễn và tính toán số dấu chấm động (floating point) 2Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 3 ALU  Thành phần thực hiện tất cả các phép tính số học và luận lý  Tất cả các thành phần khác của máy tính nhằm chuyển data vào ALU để nó xử lý và sau đó lấy ra.  Được xây dựng từ các linh kiện điện tử số Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 4 ALU ALU control unit Registers flags Registers 3Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 5 BIỂU DIỄN SỐ NGUYÊN (fixed point)  Dùng số nhị phân  Integer có nghĩa là tập hợp tất cả các số nguyên  Integer có thể là số dương hay số âm Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 6 Biễu diễn số nguyên: biễu diễn theo dấu và độ lớn  Bit đầu tiên bên trái là bit dấu  0 = +  1 = -  Ví dụ +18 = 0 001 0010 -18 = 1 001 0010  Vấn đề biểu diễn số 0 ( +010=0 0000000; -010=1 0000000)  Tổng quát một số A gồm n bit       =− = = ∑ ∑ − = − − = − 2n 0i 1ni i 2n 0i 1ni i 1aunêa2 0aunêa2 A 4Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 7 Biễu diễn số nguyên: biễu diễn bù hai  Cũng dùng bit đầu tiên bên trái làm bit dấu  Tổng quát số A có n bit ∑ − = − − +−= 2n 0i i i 1n 1n a2a2A Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 81000--8 10011111-7 10101110-6 10111101-5 11001100-4 11011011-3 11101010-2 11111001-1 -1000-0 00000000+0 00010001+1 00100010+2 00110011+3 01000100+4 01010101+5 01100110+6 01110111+7 --+8 Biễn diễn bù 2Biễu diễn dấu và độ lớnBiễu diễn thập phân 5Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 9 Chuyển đổi qua lại giữa chiều dài chuỗi bit khác nhau  Khi lưu một số có n bit vào m bit với m>n, số đã bị chuyển đổi sang dạng số m bit  Với biểu diễn theo dấu và độ lớn:  Di chuyển bit dấu sang vị trí ngoài cùng bên trái  Điền bit 0 vào các chỗ trống  Với biểu diễn bù 2  Di chuyển bit dấu sang vị trí ngoài cùng bên trái  Điền bit dấu vào các chỗ trống Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 10 Tính toán số nguyên trong biểu diễn bù 2: Lấy số đảo  Trong biểu diễn dấu và độ lớn để lấy số đảo của một số chỉ cần đảo ngược bit dấu.  Trong số bù 2 làm hai bước:  Đảo ngược các bit  Cộng với 1  Ví dụ: +18= 0001 0010 1110 1101 + 1 11101110 = -18 6Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 11 A và B là hai số đảo của nhau ∑ − = − − +−= 2n 0i i i 1n 1n a2a2A ∑ − = − − ++−= 2n 0i i i 1n 1n a21a2B Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 12 Cộng và trừ số biểu diễn bù 2  Cộng và trừ như hai số không dấu  Phép trừ: X-Y = X+(-Y)  Bỏ qua bit nhớ vượt ra ngoài kích thước từ nhớ  Khi hai số cùng âm hay cùng dương và kết quả có dấu ngược lại thì có sự kiện tràn xảy ra, ALU thông báo sự kiện để ngăn chặn. 7Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 13 Ví dụ 1001 = -7 +0101 = 5 1110 = -2 1100 = -4 +0100 = 4 10000 = 0 0011 = 3 +0100 = 4 0111 = 7 1100 = -4 +1111 = -1 11011 = -5 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 14 Tính tràn 0101 = 5 +0100 = 4 1001 = Tràn 1001 = -7 +1010 = -6 10011 = Tràn 8Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 15 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 16 Sơ đồ phần cứng thực hiện cộng và trừ 9Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 17 Nhân hai số không dấu  Phức tạp hơn, có nhiều giải thuật được dùng trong các máy khác nhau.  Nhân hai số nhị phân không dấu n bit tạo ra tích số có 2n bit Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 18 Sơ đồ khối bộ nhân bằng cách cộng và dịch 10 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 19 Lưu đồ thuật toán nhân hai số không dấu Start C,A 0 M Số bị nhân Q Số nhân Count n Q0=1? Dịch phải C,A,Q Count = Count -1 C,A<--A+M Count=0? End No Yes YesNo Tích số chứa trong A và Q Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 20 Quá trình nhân 11 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 21 Nhân hai số bù 2  Không thể nhân như hai số không dấu, ví dụ  không dấu 11(1011) x 13 (1101) = 143 (10001111)  bù 2 1011(-5) x 1101 (-3) = 10001111 (-113) -----> Sai  Vấn đề ở chỗ số âm Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 22 Khử yếu tố âm  Ví dụ nếu nhân hai số 1001 và 0011  Không dấu: được 00011011 (9 x 3=27)  Số bù 2: được 11101011 (-7 x 3 = -21) 1001 (9) x 0011 (3) 00001001 1001 x 20 00010010 1001 x 21 00011011 (27) 1001 (-7) x 0011 (3) 11111001 (-7) x 20 = -7 11110010 (-7) x 21= -14 11101011 (-21) Không dấu Bù 2 12 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 23 Khử yếu tố âm (tt)  Phương pháp:  Đổi các thừa số sang số dương, nhân bình thường và sau đó sẽ lấy dạng bù 2 của kết quả nếu hai thừa số là khác dấu.  Giải thuật Booth được chuộng hơn Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 24 Giải thuật Booth  Lưu số bị nhân vào thanh ghi M và số nhân vào thanh ghi Q, dùng một ô nhớ Q -1 đặt bên phải Q  Khởi động với A=0, Q -1= 0 và Count = n  While Count>0  switch (Q0Q-1)  Case 01 A=A+M  Case 10 A=A-M  rsht (A,Q,Q -1), dịch số học sang phải.  Count = Count - 1 13 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 25 Lưu đồ giải thuật Booth == = Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 26 Ví dụ 7 x 3 theo giải thuật Booth 14 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 27 Chia hai số nhị phân 00001101 100100111011 1011 1011 1011 001110 001111 100 Thương số Số bị chiaSố chia Số dư Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 28 Lưu đồ giải thuật chia hai số nhị phân không dấu Q chứa thương số A chứa số dư 15 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 29 Áp dụng chia hai số bù 2  M=số chia, AQ=số bị chia, Count = n  While Count>0  dịch cả Q,A sang trái 1 bit  if M và A cùng dấu  A=A-M  else  A=A+M  if A không đổi dấu  Q0=1  else  if A=0 và Q=0  Q0=1  else  A=Restore (A)// lấy lại giá trị A trước khi cộng/trừ với M, không lấy trị hiện hành.  Count = Count -1 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 30 start AQ = số bị chia M = số chia count = số bit ShiftLeft (AQ) count=count-1 M và A cùng dấu?A=A+M A=A-M A không đổi dấu?A=0 và Q=0? count=0? A=giá trị A cũ Q0=1 stop yes yes yes yes no no no no 16 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 31 Ví dụ restore00100001 add1110 shift00100001 set Q0=110010000 add0000 shif10000011 restore11000001 add1110 shift11000001 restore11100000 add1101 shift11100000 Khởi tạo giá trị ban đầu01110000 M=1101 (-3)Q = 0111 (7)A Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 32 Biểu diễn dấu chấm động (floating point)  Nguyên lý: Dùng dạng ký hiệu khoa học để biểu diễn số rất lớn hay rất nhỏ.  ví dụ: 168 000 000 000 000 = 1.68 x 1014 0.000000000000168 = 1.68 x 10-14  Linh động chuyển dấu chấm thập phân đến vị trí thuận tiện và dùng số mũ để theo dõi vị trí dấu chấm=> giúp biểu diễn dễ dàng một số rất lớn hay rất nhỏ chỉ bằng vài ký số!  Dùng cách tương tự để biểu diễn số nhị phân, dạng: ±S x B±E 17 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 33 Ví dụ • Số âm sign=1. Số dương sign = 0 • Số mũ thực = Biased Exponent - Bias • Bias = 2k-1-1= 2(8-1)-1=27-1 = 127 • Significand (mantissa): định trị, là giá trị sau dấu chấm • Ví dụ: 0 11000100 11100000000000000000000 Dấu + Định trị = 1/2 + 1/4 + 1/8 = 0.875 Số mũ = 69 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 34 Chuẩn hóa  Số được viết dưới dạng chuẩn: ± 1.bbbb × 2±E  Tại sao? – dễ tính toán, dễ so sánh (không âm)  Cơ sở nào?  Dùng bit dấu (sign bit)  Không cần lưu bit 1 bên trái dấu chấm (mặc định)  bbbb được lưu nguyên dạng  E được lưu ở dạng mã thừa (bias)  Không cần lưu cơ số 18 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 35 Ví dụ -1.1010001 x 2-10100 = 1 01101011 10100010000000000000000 = -1.6328125 x 2-20 1.1010001 x 210100 = 0 10010011 10100010000000000000000 = 1.6328125 x 220 -1.1010001 x 210100 = 1 10010011 10100010000000000000000 = -1.6328125 x 220 1.1010001 x 2-10100 = 0 01101011 10100010000000000000000 = 1.6328125 x 2-20 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 36 Dải số ứng với 32-bit word -2-127 2-127 (2-2-23) x 2128(2-2-23) x 2128 19 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 37 Mật độ số  Các số không trải đều trên trục số, càng gần zero mật độ càng cao.  Cần áp dụng phương pháp làm tròn.  Cân đối và giải pháp  Tăng số mũ --> mở rộng dải, số lượng số không đổi--> độ chính xác giảm.  Chỉ có cách duy nhất là tăng số bit (single precision (32 bit) và double-precision (64bit))  Dùng cơ số lớn, ví dụ thay 210100 = 16101 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 38 Chuẩn IEEE 754 20 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 39 [1] [2] Tham khảo về chuẩn IEE 754 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 40 Tính toán trên số dấu chấm động  Cộng và trừ  Kiểm tra số có bằng zero hay không  Điều chỉnh hai số cho bằng số mũ  Cộng hay trừ phần định trị  Chuẩn hóa kết quả (làm tròn nếu cần) (123 x 100) - (456 x 10-2) = (123 x 100) + (4.56 x 100) = 127.56 x 100 21 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 41 Lưu đồ cộng và trừ Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 42 Tính toán trên số dấu chấm động (tt)  Nhân và chia  Kiểm tra số có bằng zero hay không  Cộng hay trừ phần mũ  Kiểm tra tràn trên và tràn dưới  Nhân hay chia phần định trị  Chuẩn hóa  Làm tròn 22 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 43 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 44 23 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 45 Ví dụ  X = 0.3 × 102 = 30  Y = 0.2 × 103 = 200 Tính  X + Y=(0.3 x 102-3 + 0.2) x 103 = 0,23 x 103  X – Y=(0.3 x 102-3 - 0.2) x 103 = - 0,17 x 103  X × Y= (0.3 x 0.2) x 102+3 = 0.006 x 105  X ÷ Y = (0.3÷ 0.2) x 10 2-3 = 1.5 x 10-1 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 46 Chuẩn IEEE cho số học dấu chấm động nhị phân  Vô cực  - ∞ < mỗi số hữu hạn < +∞  Các phép toán số học liên quan đến vô cực  Quiet and signaling NaNs (NaN = Not a Number)  Các số không chuẩn – để kiểm soát tràn số mũ (số rất nhỏ, ví dụ mũ quá nhỏ) 24 Biểu diễn và tính toán số học _Nguyễn Hồng Sơn_PTITHCM 47 Bài tập 1.Lấy vài ví dụ nhân hai số bù 2 bất kỳ và thực hiện phép nhân theo giải thuật Booth. 2. Lấy vài ví dụ chia hai số bù 2 bất kỳ và thực hiện phép chia theo giải thuật chia hai số bù 2. 3. Cho định dạng 8-bit phần mũ và 23-bit phần định trị, hãy cho biết chuỗi bit biểu diễn của: a. -720 b. 0,645 4. Mô tả hoạt động cộng số dấu chấm động, cho phần định trị bị xén còn 4 ký số thập phân: a. 0.5566 x 103 + 0.7777 x 103 b. 0.3344 x 102 - 0.8877 x 10-1 11/44 BỘ NHỚ TRONG BÀI 9 Nguyễn Hồng Sơn Khoa CNTT, PTITHCM 2 Toång quan heä thoáng boä nhôù maùy tính  Ñaëc tröng cuûa heä thoáng boä nhôù  Vò trí: trong hay ngoaøi, trong CPU  Dung löôïng: kích thöôùc töø nhôù, soá löôïng töø nhôù  Ñôn vò truyeàn taûi: töø hay khoái  Phöông phaùp truy xuaát: truy xuaát tuaàn töï, truy xuaát tröïc tieáp, truy xuaát ngaãu nhieân, truy xuaát lieân keát (cache)  Hieäu suaát: thôøi gian truy xuaát, toác ñoä truyeàn, chu kyø  Daïng vaät lyù: baùn daãn hay baêng töø  Ñaëc tính vaät lyù: thay ñoåi/khoâng thay ñoåi, xoùa ñöôïc/khoâng theå xoùa  Toå chöùc boä nhôù: saép xeáp vaät lyù caùc bit ñeå hình thaønh moät töø 23 Phaân caáp boä nhôù Thanh ghi cache Main memory Disk cache Ñóa töø Baêng töø Ñóa quang -Giaûm giaù thaønh -Dung löôïng taêng -Thôøi gian truy xuaát taêng -Taàn suaát truy xuaát cuûa CPU giaûm 4 Boä nhôù chính_caùc loaïi boä nhôù baùn daãn  RAM (Random Access Memory)  RAM ñoäng: laøm töø tuï ñieän, caàn laøm töôi, maät ñoä cao  RAM tónh: laøm baèng caùc flip-flop, nhanh  ROM (Read Only Memory)  PROM (Programmable ROM)  EPROM(Erasable PROM)  EEPROM (Electrically EPROM)  Flash Memory: laäp trình laïi raát nhanh, maät ñoä cao, xoùa baèng ñieän vaø chæ caàn vaøi giaây. 35 Boä nhôù chính_toå chöùc boä nhôù  Cell nhôù laø phaàn töû cô baûn coù caùc thuoäc tính:  Hai traïng thaùi: 1 vaø 0  Coù theå caøi ñaët traïng thaùi, hoaït ñoäng ghi  Coù theå ñoïc traïng thaùi, hoaït ñoäng ñoïc 6 Cell Ñieàu khieån Choïn Data vaøo Ghi Cell Ñieàu khieån Choïn Ñoïc Data ra 47 Boä nhôù chính_chip logic  Moãi chip goàm moät daõy caùc cell nhôù  Daõy ñöôïc toå chöùc thaønh W töø B bit (vd: 16_Mbit chip ñöôïc toå chöùc töø 1M töø 16 bit)  1bit chip: data ñöôïc ñoïc ghi moãi laàn moät bit 8 Ñeäm ñòa chæ haøng Ñeäm ñòa chæ coät Boä ñeám laøm töôi MUX Giaûi maõ haøng Daõy boä nhôù 2048x2048 Boä khueách ñaïi vaø coång I/O Giaûi maõ coät Ñeäm nhaäp Ñeäm xuaát Ñònh thôøi vaø ñieàu khieån A0 A1 A10 RAS CAS WE OE D1 D2 D3 D4 4 59 10 Boä nhôù chính_chip logic  RAS (row address select), CAS (column address select)  Haøng keát noái ñeán ngoõ Choïn (select) cuûa cell  Coät keát noái ñeán ngoõ vaøo/ra data  Soá ñöôøng ñòa chæ caàn = log2W 611 Boä nhôù chính_toå chöùc module  Neáu chip 1 bit thì caàn soá chip ít nhaát baèng soá bit/töø cuûa RAM  Toå chöùc moät RAM caên cöù vaøo dung löôïng yeâu caàu vaø loaïi chip 12 256K 1bit D e cod e 1 /512 Decode 1/512 D e cod e 1 /512 Decode 1/512 D e cod e 1 /512 Decode 1/512 1 2 7 8 9 9 256K 1bit 256K 1bit Bit #1 Bit #7 Bit #8 MAR MBR Boä nhôù 256 Kbyte 713 14 Baøi taäp  Thieát keá boä nhôù DRAM dung löôïng 1Mbyte vôùi caùc chip 1bit (dung löôïng moät chip laø tuøy choïn)? Từ nhớ 1 byte.  Thiết kế DRAM 1Mbyte với các chip 1 bit co dung lượng 256Kbit? Từ nhớ 1 byte.  Haõy veõ sô ñoà thieát keá DRAM 256Mbyte vôùi caùc chip 2 bit coù dung löôïng 128Mbit? Từ nhớ 1 byte.  Thiết kế DRAM 1Mbyte với 16 chip 1 bit co dung lượng 256Kbit va cac chip 4 bit co dung luong 1Mbit? Từ nhớ 1 byte.  Thieát keá boä nhôù DRAM dung löôïng 4Mbyte vôùi caùc chip 2bit (dung löôïng moät chip laø tuøy choïn) 815 1M 1bit D e cod e 1 /10 24 Decode 1/1024 D e cod e 1 10 24 Decode 1/1024 D e cod e 1 /10 24 Decode 1/1024 1 2 7 8 10 10 1M 1bit 1M 1bit Bit #1 Bit #7 Bit #8 MAR MBR Boä nhôù 1Mbyte 16 Boä nhôù cache  Nguyeân lyù: Bộ nhớ cache là một giải pháp tăng tốc truy xuất bộ nhớ chính. Cache chứa một phần bộ nhớ chính. Vì vậy khi muốn truy xuất một từ nhớ, CPU sẽ tìm trong cache, nếu có sẽ lấy từ nhớ rất nhanh, nếu không thấy sẽ lấy từ bộ nhớ chính và nạp nguyên khối nhớ chứa từ đó vào cache. Lý do nạp cả khối nhớ vào cache: trên cơ sở dự đoán các truy xuất tiếp theo sẽ tham chiếu đến các từ nhớ lân cận từ nhớ vừa truy xuất và như vậy truy xuất kế tiếp sẽ nhanh. 917 CPU Cache Boä nhôù chính Truyeàn vaøo töøng töø (word) Truyeàn vaøo töøng khoái (block) 18 0 1 2 2n-1 Block (K töø) Block (K töø) Block (K töø) Chieàu daøi moät töø Ñòa chæ Noäi dung Boä Nhôù Chính Chæ soá line Tag Block 0 1 2 C-1 K töø Cache 10 19 Baét ñaàu Nhaän ñòa chæ töø CPU Coù block chöùa ñòa chæ naøy khoâng? Laáy noäi dung chuyeån cho CPU Truy xuaát boä nhôù chính Caáp line cho khoái boä nhôù chöùa ñòa chæ naøy Chuyeån noäi dung cho CPU Naïp khoái nhôù vaøo cache khoâng coù Keát thuùc Hoaït ñoäng ñoïc cache 20 Kích thöôùc cuûa cache  Boä nhôù coù kích thöôùc 2n, chia laøm M khoái, moãi khoái coù K töø => M=2n/K  Cache coù C line, moãi line chöùa moät tag vaø moät khoái K töø  M>>C  Cache ñuû nhoû ñeå chi phí ~ main memory vaø khoâng trôû neân chaäm  Cache ñuû lôùn ñeå truy xuaát nhanh  Phaåm chaát cache∈coâng ngheä vi maïch  Heä soá tìm thaáy (hit ratio): khaû naêng laáy ñöôïc soá lieäu caàn thieát töø cache. 11 21 A #nh xaï boä nhôù chính vaøo cache  Toå chöùc cache phuï thuoäc vaøo phöông phaùp aùnh xaï ñöôïc duøng  Coù ba phöông phaùp aùnh xaï chuû yeáu  Tröïc tieáp  Lieân keát toàn bộ  Lieân keát nhoùm 22 A #nh xaï tröïc tieáp  i= j modulo c  i : chæ soá line  j : chæ soá khoái boä nhôù chính  c : soá löôïng line cuûa cache Haøm aùnh xaï deã daøng thöïc hieän baèng ñòa chæ. Ñeå phuïc vuï cho vieäc truy xuaát, moãi ñòa chæ boä nhôù chính coù theå ñöôïc chia thaønh ba phaàn:  w bit thaáp nhaát ñònh danh cho 1 töø hay moät byte trong moät khoái  s bit coøn laïi chæ ra moät trong 2s khoái boä nhôù chính  Trong ñoù s-r bit cao nhaát laø danh ñònh cuûa tag  r bit coøn laïi laø danh ñònh cuûa cache line. 12 23 W0 W1 W2 W3 W4j W(4j+1) W(4j+2) W(4j+3) tag line töø So saùnh Ñòa chæ boä nhôù Cache Tag Noäi dung B0 Bj Boä nhôù chính Coù trong cache Khoâng coù trong cache s+w S w K0 Ki s-r r w s-r w Line 0 1 C-1 Kc-1 A#nh xaï tröïc tieáp. 24 c-1,2c-1,.,2s-1c-1 1,c+1,,2s-c+11 0,c,,2s-c0 Caùc khoái boä nhôù ñöôïc gaùnCache line A#nh xaï tröïc tieáp.. 13 25 A #nh xaï tröïc tieáp  Ñôn giaûn, chi phí thöïc hieän thaáp  Moät khoái boä nhôù cho tröôùc chæ ñöôïc gaùn moät vò trí cache coá ñònh => heä soá tìm thaáy seõ thaáp trong moät soá tröôøng hôïp, khoâng taän duïng toái ña hieäu suaát cache 26 A #nh xaï tröïc tieáp  Vi# du $  Kích thöôùc cache 64Kbyte  K=4byte  Boä nhôù chính 16Mbyte=224 (24 ñöôøng ñòa chæ) ⇒M=222 Block, C=214 Trình baøy hoaït ñoäng aùnh xaï vaø cho bieát caùc khoái boä nhôù chính naøo vaøo line naøo cuûa cache? 14 27 28 A #nh xaï lieân keát toàn bộ (full associative mapping)  Cho pheùp moãi khoái boä nhôù ñöôïc aùnh xaï vaøo baát kyø line naøo cuûa cache.  Ñòa chæ boä nhôù goàm coù hai phaàn:  Tag: ñònh danh duy nhaát cho moät khoái boä nhôù  Töø: vò trí noäi dung caàn laáy trong khoái boä nhôù 15 29 W0 W1 W2 W3 W4j W(4j+1) W(4j+2) W(4j+3) tag töø So saùnh Ñòa chæ boä nhôù Cache Tag Noäi dung B0 Bj Boä nhôù chính Coù trong cache Khoâng coù trong cache s+w S w K0 Ki s w w Line 0 1 C-1 Kc-1 A#nh xaï lieân keát toàn bộ. s s s 30 A #nh xaï lieân keát toàn bộ  Ñeå xaùc ñònh khoái coù trong cache hay khoâng, logic ñieàu khieån cache phaûi kieåm tra tag ôû moïi line => maïch thöïc hieän kieåm tra khaù phöùc taïp.  Linh hoaït choïn block ñeå thay theá khi ñoïc moät block môùi vaøo cache => thieát keá caùc thuaät toaùn thay theá ñeå toái ña heä soá tìm thaáy 16 31 A #nh xaï lieân keát nhoùm (set associative mapping)  Dung hoøa öu ñieåm cuûa caû hai phöông phaùp treân.  Toaøn boä cache ñöôïc chia thaønh v nhoùm, moãi nhoùm coù k line.  Pheùp aùnh xaï nhö sau: c=v.k i=j modulo v i: chæ soá cuûa nhoùm trong cache j: chæ soá cuûa khoái boä nhôù chính c: toång soá line trong cache 32 A #nh xaï lieân keát nhoùm (tt)  Khoái Bj ñöôïc aùnh xaï vaøo baát kyø line naøo trong nhoùm i  Ñòa chæ boä nhôù coù ba phaàn:  Tag  Nhoùm  Töø  d bit chæ ra coù 2d nhoùm, s-d laø soá bit cuûa phaàn tag. Nhö vaäy boä nhôù chính ñöôïc chia thaønh 2s khoái. 17 33 F0 F1 FK-1 FK FK+i B0 B1 Bj tag töø So saùnh Ñòa chæ boä nhôù Cache Tag Noäi dung Boä nhôù chính Coù trong cache Khoâng coù trong cache s+w Nhoùm 0 s-d w w line 0 1 C-1 F2K-1 A#nh xaï lieân keát nhoùm. s-d s-d d nhoùm Nhoùm 1 s+w 34 Ví dụ 2 line/nhóm (two way associative mapping) 18 35 Thuaät toaùn thay theá  Least-recently used  FIFO  Least-frequently used  Random 36 Chính saùch ghi  Hai vaán ñeà  Thay ñoåi moät töø trong cache  töø trong boä nhôù khoâng hôïp leä  Thay ñoåi moät töø trong boä nhôù töø trong cache khoâng hôïp leä  Kyõ thuaät ghi  Write througth  Write back : duøng UPDATE bit 19 37 Chính saùch ghi  Toå chöùc bus vôùi nhieàu thieát bò (boä xöû lyù) coù cache rieâng vaø duøng chung moät main memory vaán ñeà môùi  Cache coherency system  Bus watching with Write Througth: moãi boä ñieàu khieån cache ñeàu giaùm saùt caùc ñöôøng ñòa chæ ñeå phaùt hieän hoaït ñoäng boä nhôù vôùi caùc bus master khaùc, neáu coù ghi vaøo moät vò trí boä nhôù naøo ñoù maø moät line cache coù chöùa thì boä ñieàu khieån seõ ñaët line vaøo traïng thaùi baát hôïp leä.  Hardware Transparency: boå sung phaàn cöùng ñeå ñaûm baûo moïi caäp nhaät boä nhôù ñeàu ñöôïc thoâng baùo vôùi taát caû caùc cache  No-cachable memory: chæ moät phaàn boä nhôù ñöôïc chia seû cho nhieàu boä xöû lyù (thieát bò). Khoâng bao giôø copy phaàn boä nhôù chia seû vaøo trong cache. 38 Kích thöôùc khoái  Khi moät khoái baét ñaàu gia taêng kích thöôùc töø nhoû ñeán lôùn. Thoaït ñaàu hit ratio taêng, khi kích thöôùc khoái lôùn ñeán moät möùc naøo ñoù hit ratio laïi giaûm.  Khoái lôùn soá line giaûm  Khi khoái lôùn moãi töø theâm vaøo trôû neân xa vôùi töø ñang tham chieáu vaø hieám khi ñöôïc tham chieáu trong töông lai gaàn.  Quan heä giöõa kích thöôùc khoái vaø hit ratio raát phöùc taïp, khoù tìm ra chính xaùc quan heä naøo trong ñoù hit ratio luoân toái öu. 20 39 Soá löôïng cache  Cache ñôn  On-chip cache (internal cache): Cache naèm treân cuøng chip vôùi CPU.  Off-chip cache (external cache) : Cache coù theå ñoïc qua external bus  Cache hai möùc: duøng caû hai loaïi  internal cache_L1  vaø external cache _L2 (thöôøng duøng SRAM) 40 21 41 Soá löôïng cache  Hôïp nhaát  Khi môùi xuaát hieän on-chip cache, nhieàu thieát keá duøng moät cache ñeå chöùa data vaø instruction  Coù hit ratio cao, do coù ñieàu kieän laøm vieäc theo Data- bound hay Instruction-bound  Ñôn giaûn cho thieát keá vaø hieän thöïc  Taùch bieät  Nhöõng thieát keá gaàn ñaây chia cache thaønh hai phaàn: moät chöùa data vaø moät chöùa insruction  Hoã trôï xöû lyù song song, pipelining caùc chæ thò  Ngaên chaën söï tranh chaáp giöõa boä xöû lyù chæ thò vaø ñôn vò thöïc thi. 42 Ñieàu khieån cache  Cache beân trong ñöôïc ñieàu khieån bôûi hai bit cuûa moät thanh ghi ñieàu khieån, goïi laø CD (cache disable) vaø NW (not write-througth)  Coù hai chæ thò  INVD: huûy boû noäi dung trong cache vaø baùo cho cache ngoaøi.  WBINVD: cuõng coù chöùc naêng töông töï nhöng baùo cho cache ngoaøi thöïc hieän ghi vaøo boä nhôù khoái ñaõ hieäu chænh. 22 43 Sô ñoà cache trong Pentium IV 44 Sô ñoà cache trong PowerPC G5 23 45 Tính toán với cache  Hiệu suất cache được đánh giá qua: CPU execution time =(CPU clock cycles + Memory stall cycles)× Clock cycle time  Giả sử CPU clock cycles đã bao gồm thời gian xử lý một cache hit và CPU bị treo trong khi cache miss. 46 Tính toán với cache (tt)  Số chu kỳ treo do đợi bộ nhớ là:  Average memory access time = Hit time+Miss rate.Miss penalty 24 47 Ví dụ Một máy tính chỉ cần 1 clock cho một chỉ thị nếu tìm thấy trong cache. Số chỉ thị cần truy xuất data chiếm 50%. Chi phí không tìm thấy trong cache là 25 chu kỳ clock và hệ số hit là 98%. Nếu tất cả các chỉ thị đều tìm thấy trong cache thì máy tính chạy nhanh gấp bao nhiêu lần so với trường hợp này? 48 Giải -Tính thời gian thực thi nếu luôn tìm thấy trong cache: TCPU-EX = (Số chu kỳ CPU+ Số chu kỳ treo đợi).Tck = (IC.CPI + 0).Tck= IC.1.Tck -Tính thời gian thực thi có miss rate: Thời gian treo = IC.(1+0,5).(1-0,98).25=0,75IC Thời gian thực thi = (IC.1+0,75IC).Tck Số lần nhanh hơn = (IC.1+0,75IC).Tck/IC.1.Tck= 1,75 25 49 Tính số hit trong hoạt động ghi Có hai tùy chọn với hoạt động ghi: -Write allocate: Cấp block trên cache cho hoạt động ghi. -No-write allocate: Không cấp block, block được cập nhật ngay trên bộ nhớ. 50 Ví dụ Giả sử ánh xạ cache là liên kết với write-back. Xem xét đoạn chương trình sau: write M[100] write M[100] read M[200] write M[200] write M[100] Hãy tính số hit và miss: a, với write allocate b, với no-write allocate 11 BỘ NHỚ NGOÀI BÀI 9 2 ÑÓA TÖØ  Ñóa töø laø boä nhôù thöù caáp phoå duïng nhaát  Phöông phaùp truy xuaát: tröïc tieáp  Truy xuaát nhanh hôn baêng töø  Coù : ñóa meàm, ñóa cöùng  Beà maët ñóa ñöôïc phuû vaät lieäu coù theå töø hoùa 23 ĐĨA TỪ (tt)  Döõ lieäu ñöôïc ghi vaøo hay ñoïc ra bôûi moät cuoän daây caûm öùng goïi laø ñaàu töø (head)  Döõ lieäu ñöôïc saép xeáp treân ñóa thaønh caùc voøng troøn ñoàng taâm ñöôïc goïi laø track. Track coù beà ngang baèng vôùi kích thöôùc cuûa ñaàu töø. Giöõa caùc track coù khoaûng ngaên caùch.  Moãi track coù löôïng bit löu tröõ baèng nhau => maät ñoä?  Moãi track ñöôïc chia thaønh caùc sector, thöôøng coù töø 10 ñeán 100 sector/track, giöõa caùc sector cuõng coù khoaûng ngaên caùch.  Coù töø 40 ñeán 100 track treân moät maët ñóa  Moãi sector thöôøng coù töø 32 ñeán 1024 byte. 4 35 6 Đĩa từ (tt)  Những Track vật lí nằm trên những đĩa khác nhau được nhóm thành Cylinder và chúng được chia thành Sector.  Khái niệm về Cylinder là rất quan trọng, khi những thông tin trên những đĩa khác nhau trong cùng một Cylinder thì không cần phải dịch chuyển đầu đọc/ghi. Sector là đơn vị nhỏ nhất của đĩa có thể truy cập.  Ổ đĩa dùng kỹ thuật gọi là Zoned-bit recording thì những Track nằm vòng ngoài có nhiều Sector hơn những Track nằm bên trong . 47 Ñóa töø  Nhaän daïng vò trí cuûa sector trong moät track nhö theá naøo?  Phaûi coù ñieåm ñaàu cuûa track  Coù caùch xaùc ñònh ñieåm baét ñaàu vaø keát thuùc moät sector  Giaûi phaùp: duøng thoâng tin ñieàu khieån => Caàn phaûi ñònh daïng ñóa (format) tröôùc khi duøng 8 Ví dụ định dạng đĩa Seagate ST506 59 Ñóa töø  Caùc ñaëc tröng  Ñaàu töø coá ñònh: coù moät ñaàu cho moãi track  Ñaàu töø di chuyeån: moät ñaàu duøng chung cho caùc track  Moät maët  Hai maët  Nhieàu ñóa 10 Ñóa töø  Ñaàu töø Winchester  Ñöôïc thieát keá ñeå laøm vieäc gaàn vôùi maët ñóa, taïo ñieàu kieän taêng dung löôïng?  Töïa nheï leân maët ñóa, khi ñóa quay coù aùp suaát taïo ra ñuû ñeå naâng ñaàu töø leân traùnh ma saùt vôùi ñóa. 611 Ñóa töø  Thôøi gian truy xuaát ñóa  Seek time: thôøi gian chuyeån ñaàu töø ñeán track  Rotational latency: thôøi gian chuyeån sector ñeán ñaàu töø  Transmit time: thời gian truyền 12 Ñóa töø Ñeå truy xuaát thoâng tin:  Ñaàu töø phaûi di chuyeån ñeán ñuùng track-maát moät thôøi gian goïi laø thôøi gian tìm kieám.  Sector phaûi quay ngay döôùi ñaàu töø-thôøi gian ñeå ñöa sector ñeán döôùi ñaàu töø goïi laø thôøi gian quay.  Thôøi gian truy xuaát = ΣTi  Thôøi gian tìm kieám treân caùc ñóa cöùng hieän haønh trung bình laø 10ms (Seagate, Maxtor)  Toác ñoä quay 5400 voøng/phuùt vaø 7200 voøng/phuùt  Thôøi gian quay thöôøng laáy baèng vôùi thôøi gian quay ½ voøng  Thời gian truyền tùy vào tốc độ của chuẩn đĩa 713 Ñóa töø  Thôøi gian truy xuaát thoâng tin treân ñóa chaäm hôn khoaûng 100 000 laàn so vôùi truy xuaát treân RAM 14 Hệ thống file  Cách tổ chức để xác định chính xác những dữ liệu được lưu trên ổ đĩa cứng.  Hệ thống File phụ thuộc vào hệ điều hành.  Ví dụ FAT là hệ thống file được giới thiệu lần đầu tiên vào năm 1981 cùng với sự ra đời của MS-DOS . Mục đích của FAT (File Allocation Table) là cung cấp một bản đồ giữa những Cluster và vị trí vật lí của dữ liệu được xác định bởi Cylinder, Track và Sector, được dùng bởi phần cứng điều khiển ổ đĩa  FAT 16, FAT 32, NTFS 815 Hệ thống file  FAT bao gồm đầu vào mọi File được lưu trữ trên phân vùng ổ cứng và là địa chỉ bắt đầu Cluster của File. Mỗi Cluster bao gồm nội dung của File và con trỏ chỉ tới Cluster tiếp theo chứa nội dung File hoặc thông báo kết thúc File : End-Of-File (0xFFFF) để thông báo Cluster đó là điểm cuối của File  Ví dụ dưới đây có 03 File: File1.txt dùng 03 Cluster . File2.txt là file bị phân mảnh cũng có 03 Cluster ( 5,6 và 8 ), và File3.txt vừa trong một Cluster (7) 16 BĂNG TỪ  Reû, dung löôïng lôùn, töø 50 Mb trôû leân.Ví duï baêng video coù teå töø 2Gb ñeán 8Gb  Laø phöông tieän löu tröõ vaø truy xuaát tuaàn töï. 917 18 ĐĨA QUANG  CD-ROM (Compact Disk-ROM)  DVD-(Digital Video/Versatile Disk)  Ñöôïc laøm baèng vaät lieäu toång hôïp: polycarbonate, ñöôïc phuû moät lôùp phaûn quang thöôøng laø aluminum.  Döõ lieäu ghi vaøo ôû daïng soá (digital), khi ghi döõ lieäu ñöôïc bieåu dieãn döôùi daïng moät chuoãi caùc loã cöïc nhoû treân beà maët phaûn quang  Thoâng tin ñöôïc laáy bôûi moät laser coâng suaát thaáp chieáu saùng maët phaûn quang trong khi ñóa quay.  Cöôøng ñoä aùnh saùng phaûn chieáu thay ñoåi khi gaëp phaûi loã. Thay ñoåi naøy seõ ñöôïc caûm nhaän bôûi caûm bieán quang vaø ñöôïc ñoåi ngöôïc thaønh tín hieäu soá. 10 19 20 11 21 RAID (Redundant Array of Independent Disk)  Caùc nhaø thieát keá taêng hieäu suaát laøm vieäc cuûa maùy tính baèng kyõ thuaät song song.  RAID laø chuaån ñeå thieát keá cô sôû döõ lieäu nhieàu ñóa, taïo ñieàu kieän cho xöû lyù song song  RAID ñöôïc ñeà nghò nhö laø giaûi phaùp giuùp xoùa boû ngaên caùch veà toác ñoä giöõa CPU vaø oå ñóa ngoaøi.  Caûi thieän ñoä tin caäy  Khoù khaên: toå chöùc löu tröõ cô sôû döõ lieäu höõu duïng treân nhieàu maët ñóa vaø sự kha Gc nhau giữa ca Gc heä ñieàu haønh ⇒ Chuaån thieát keá cô sôû döõ lieäu ña ñóa goïi laø RAID RAID coù 6 möùc cơ ba Hn, ñaùnh soá töø 0 ñeán 5. 22 RAID  Caùc möùc RAID coù 3 ñaëc tính:  Laø moät taäp caùc ñóa vaät lyù ñöôïc heä ñieàu haønh coi nhö laø moät ñóa  Döõ lieäu ñöôïc löu tröõ xuyeân qua caùc ñóa vaät lyù  Dung löôïng ñóa döï phoøng ñöôïc duøng ñeå löu thoâng tin kieåm tra (parity) vaø baûn sao döõ lieäu ñeå coù theå phuïc hoài döõ lieäu trong tröôøng hôïp ñóa chính hö hoûng.  Caùc möùc RAID khaùc nhau ôû hai ñaëc tính sau. RAID 0 khoâng coù ñaëc tính thöù 3. 12 23 RAID 0  RAID 0 khoâng coù hoã trôï döï phoøng.  Chæ ñôn thuaàn laø coù moät daõy ñóa, vaø döõ lieäu ñöôïc ñaët vaøo caùc ñóa cöù nhö moät ñóa lôùn_ñóa luaän lyù.  Lôïi ích: khi coù hai yeâu caàu I/O ñoàng thôøi ñeán hai khoái döõ lieäu khaùc nhau, neáu naèm treân hai ñóa khaùc nhau laø coù theå ñaùp öùng ñoàng thôøi.  Toaøn boä ñóa ñöôïc chia thaønh caùc maûnh (strip), maûnh laø caùc khoái vaät lyù, caùc sector.  Caùc strip ñöôïc saép xeáp theo round-robin lieân tieáp nhau. 24 Strip 0 Strip 4 Strip 8 Strip 12 Strip 1 Strip 5 Strip 9 Strip 13 Strip 2 Strip 6 Strip 10 Strip 14 Strip 3 Strip 7 Strip 11 Strip 15 ÑÓA LUAÄN LYÙ RAID 0 13 25 Ví dụ ánh xạ data cho RAID 0 26 RAID 1  Nhaân ñoâi taát caû döõ lieäu  Ñoïc moät trong hai  Ghi caû hai  Phuïc hoài döõ lieäu bò hoûng ñôn giaûn  Chi phí cao 14 27 Strip 0 Strip 4 Strip 8 Strip 12 ÑÓA LUAÄN LYÙ Strip 0 Strip 4 Strip 8 Strip 12 Strip 3 Strip 8 Strip 11 Strip 15 Strip 2 Strip 6 Strip 10 Strip 14 Strip 1 Strip 5 Strip 9 Strip 13 Strip 3 Strip 8 Strip 11 Strip 15 Strip 2 Strip 6 Strip 10 Strip 14 Strip 1 Strip 5 Strip 9 Strip 13 RAID 1 (nhaân ñoâi) 28 RAID 2  Hoã trôï truy xuaát song song  Taát caû caùc ñóa thaønh vieân ñeàu tham gia vaøo quaù trình thöïc thi moãi yeâu caàu I/O  Moãi strip laø nhoû, côõ 1 byte hay töø  Maõ söûa loãi ñöôïc tính theo caùc bit töông öùng treân moãi ñóa döõ lieäu. Caùc bit cuûa maõ söûa sai ñöôïc löu treân vò trí töông öùng treân nhieàu ñóa. Thöôøng duøng maõ Hamming  Maëc duø duøng ít ñóa hôn RAID 1 nhöng vaãn coøn nhieàu ñaét tieàn. 15 29 b3b2b1 F2(b)F1(b)F0(b)b0 30 RAID 3  Toå chöùc gioáng RAID 2  Chæ boå sung theâm moät ñóa, söû duïng maõ kieåm tra loãi ñôn giaûn laø parity bit, bit kieåm tra ñöôïc tính treân cô sôû caùc bit treân caùc ñóa döõ lieäu coù vò trí töông öùng. X4(i)=X3(i) ⊕ X2(i) ⊕ X1(i) ⊕ X0(i) ⇒ X0(i)=X3(i) ⊕ X2(i) ⊕ X1(i) ⊕ X4(i) X1(i)=X3(i) ⊕ X2(i) ⊕ X4(i) ⊕ X0(i) . 16 31 b3b2b1 P(b)b0 RAID 3 32 RAID 4  Hoã trôï truy xuaát ñóa ñoäc laäp 17 33 RAID 5 34 RAID 5 mở rộng (còn gọi là RAID 6)  Bổ sung thêm một đĩa để tăng cường kiểm soát lỗi theo Reed-Solomon code 18 35 RAID 1-0  Kết hợp RAID 0 và RAID 1 11 Bài 10 HỆ THỐNG BUS 2 Cấu trúc liên nối  Tập hợp các đường dẫn kết nối các module khác nhau được gọi là cấu trúc liên nối.  Việc thiết kế cấu trúc này phụ thuộc vào nhu cầu trao đổi giữa các module. 23 Memory address inst/Data Inst/Data Read write I/O Moduleaddress Internal Data Interrup request Read write External Data Internal Data External Data CPU Instruction Data Data Interrup request Control signal address 4 Các hoạt động truyền thường xuyên  Memory đến CPU  CPU đến Memory  I/O đến CPU  CPU đến I/O  I/O Memory 35 Liên kết bus  Bus là một tuyến gồm nhiều đường thông tin kết nối hai hay nhiều thiết bị.  Đặc tính quan trọng nhất của bus : bus là một môi trường truyền dẫn chia sẻ.  Song song  Máy tính chứa một số các bus khác nhau cung cấp đường nối giữa các thành phần tại các mức khác nhau trong tổ chức phân cấp của máy tính. 6 Bus hệ thống  Một bus nối các thành phần chủ chốt của máy tính được gọi là bus hệ thống (system bus). Có nhiều thiết kế cho system bus. Bất kỳ thiết kế nào cũng có ba nhóm :  Data  Address  Control 47 CPU Memory Memory I/O I/O Control Address Data 8 Các đường điều khiển thông thường  Ghi bộ nhớ  Đọc bộ nhớ  Ghi I/O  Đọc I/O  Truyền báo nhận ACK  Yêu cầu bus  Cấp bus  Yêu cầu ngắt  Định thời  Reset 59 Hoạt động của bus  Một module muốn truyền data phải làm hai điều:  lấy quyền dùng bus  truyền dữ liệu qua bus  Một module muốn lấy data từ module khác  lấy quyền dùng bus  gửi yêu cầu đến module kia qua đường điều khiển và địa chỉ thích hợp  đợi 10 Phân cấp đa bus  Khi số thiết bị kết nối vào bus quá nhiều, hiệu suất máy trở nên sa sút bởi hai lý do:  trễ truyền lớn_ thời gian để lấy quyền dùng bus _vì điều khiển được chuyển từ thiết bị này sang thiết bị khác.  Bus bị nghẽn khi tổng yêu cầu truyền đạt mức giới hạn của bus;  Nếu dùng bus rộng hơn, tốc độ cao hơn? 611 Phân cấp đa bus  Giải pháp cho vấn đề là dùng nhiều bus  Local bus: kết nối CPU với bộ nhớ cache và có thể hỗ trợ kết nối cho một hay nhiều thiết bị cục bộ. Bộ điều khiển cache không chỉ kết nối đến local bus mà còn kết nối đến system bus.  System bus: kết nốt tất cả các module bộ nhớ.  Expansion bus: mặc dù có thể kết nối nhiều I/O controller vào system bus. Nhưng giải pháp hiệu quả hơn là dùng một hay nhiều bus mở rộng. Giao tiếp bus mở rộng đệm dữ liệu truyền giữa system bus với I/O controller trên bus mở rộng. Điều này cách ly được các luồng lưu lượng. 12 processor Cache Local I/O controllerBộ nhớ System bus Giao tiếp mở rộngNetwork SCSI Modem Serial Bus mở rộng Local bus Controller KIẾN TRÚC TRUYỀN THỐNG 713 Bộ nhớ Cache /bridgeprocessor High-speed bus Bus mở rộng SCSI P1394 Card đồ họa Video High-Speed LAN Giao tiếp bus mở rộngFax Modem serial Local bus System bus KIẾN TRÚC TĂNG HIỆU SUẤT 14 Các đặc trưng của bus  Loại bus  Phương pháp phân xử  Timing  Bề rộng  Dạng truyền data 815 Loại bus  Không ghép kênh: được gán cố định cho một chức năng hay một nhóm thiết bị. Ví dụ  Ưu điểm  Khuyết điểm  Ghép kênh thời gian: bus được dùng cho nhiều chức năng. Ví dụ  Ưu điểm  Khuyết điểm 16 Phương pháp phân xử bus  Trong hầu hết các hệ thống có nhiều module cần phải điều khiển việc dùng bus. Ví dụ I/O module muốn đọc ghi data trực tiếp với bộ nhớ không qua CPU. Mỗi lúc Bus chỉ phục vụ một đơn vị. Cấp bus cho đơn vị nào và vào thời điểm nào?  Phân thành hai nhóm phương pháp:  Tập trung: dùng bus controller hay arbiter , phân phối thời gian, arbiter có thể là một module tách biệt hay là thành phần của CPU  Phân bố: mỗi module chứa một access control logic, chúng tương tác với nhau để chia sẻ bus.  Mục đích của phân xử bus là bổ nhiệm một thiết bị CPU hay I/O module làm master. Master có thể khởi động đọc/ghi data với thiết bị khác. Các thiết bị được đọc hay ghi đó được gọi là slave. 917 Timing  Timing đề cập đến phương pháp trong đó các sự kiện được phối hợp trên bus.  Đồng bộ: diễn biến các sự kiện được xác định theo một đồng hồ (clock). Bus có một đường clock truyền trạng thái 1 và 0 luân phiên liên tục. Việc truyền 1-0 được xem như một chu kỳ đồng hồ hay chu kỳ bus, qua đó xác định một khe thời gian.  Tất cả các thiết bị trên bus đều thấy clock. Tất cả các sự kiện đều bắt đầu tại đầu của chu kỳ bus  Các tín hiệu bus có thể thay đổi tại sườn của xung clock  Hầu hết các sự kiện đều chiếm một chu kỳ. 18 clock Start read Addr lines Data lines Ack Timing đồng bộ 10 19 Timing  Timing bất đồng bộ: xuất hiện sự kiện này diễn ra sau và phụ thuộc vào sự xuất hiện của một sự kiện khác  Cho phép một hỗn hợp các thiết bị nhanh chậm khác nhau, dùng kỹ thuật cũ và mới cùng chia sẻ bus. 20 MSYN SSYN Read Addr Lines Data lines 11 21 Bề rộng bus  Bề rộng của data bus ảnh hưởng đến hiệu suất của hệ thống: data bus càng rộng số lượng bit truyền đi một lần càng lớn.  Bề rộng của addr bus ảnh hưởng đến dung lượng của hệ thống: addr bus càng rộng dải vị trí địa chỉ hóa càng lớn. 22 Dạng truyền dữ liệu  Có một số dạng thức truyền data khác nhau mà bus hỗ trợ  Tất cả bus đều hỗ trợ cả ghi (masterslave) và đọc (slavemaster).  Trong trường hợp ghép kênh addr/data: trước tiên bus được dùng để chỉ addr sau đó được dùng truyền data. Trong hoạt động đọc thường phải đợi lấy data từ slave và đặt lên bus. Trong cả hai hoạt động đọc và ghi đều phải mất thời gian lấy điều khiển bus. 12 23 Address (chu kỳ đầu) Data (chu kỳ thứ hai) Address Truy xuất Data thời gian Ghép kênh addr/data Ghi Đọc 24 Dạng truyền dữ liệu  Trong trường hợp không ghép kênh: data bus và addr bus được cầp riêng các đường.  Địa chỉ được đặt lên addr bus và duy trì trong khi data được đưa lên data bus. Trong hoạt động ghi, data được đưa lên data bus ngay sau khi địa chỉ đã ổn định trên addr bus và slave đã nhận ra địa chỉ.Trong hoạt động đọc, slave sẽ đặt data lên data bus ngay khi nhận ra địa chỉ của nó và đã lấy được data. 13 25 Address Data Data và addr được master gửi ra trong cùng một chu kỳ lên các đường khác biệt Address Data thời gian Ghi Đọc 26 Dạng truyền dữ liệu  Có một số hoạt động phối hợp trên bus:  Đọc-ghi: đơn giản là một hoạt động đọc và ghi lại ngay tức thì tại cùng địa chỉ. Địa chỉ được công bố một lần vào thời điểm ban đầu. Hoạt động này không thể chia sẻ, nhằm ngăn chặn bất kỳ truy xuất nào đối với phần tử dữ liệu từ các master khác. Nhằm bảo vệ bộ nhớ trong hệ thống đa chương.  Đọc sau khi ghi: là một hoạt động cũng không thể chia sẻ gồm có ghi sau đó đọc lại ngay tại cùng địa chỉ. Mục đích kiểm tra. 14 27 Address Dataread Data write Address Data write Data read Đọc-ghi Đọc sau khi ghi 28 Dạng truyền dữ liệu  Một số hệ thống bus cũng hỗ trợ truyền data dạng khối. Trong trường hợp này, một chu kỳ địa chỉ với nhiều chu kỳ dữ liệu theo sau. Phần dữ liệu đầu được đặt vào địa chỉ xác định nào đó, phần sau được đặt vào các vị trí địa chỉ kế tiếp. Address Data Data Data 15 29 Front Side Bus và Chipset BÀI 11B 30 Khái niệm  FSB là tên chỉ các bus địa chỉ và bus data của CPU được dùng trong các tài liệu của nhà chế tạo. Thuật ngữ này thường được dùng trong các mainboard của máy PC ngày nay. Ít khi được dùng trong các hệ thống nhúng.  FSB đóng vai trò kết nối giữa CPU và phần còn lại của phần cứng máy tính qua một chipset. Chipset là tên để chỉ một nhóm các vi mạch (chip) đặc biệt, chúng được thiết kế để làm việc cùng nhau. Chipset thường được chia thành hai phần, gọi là chipset cầu bắc và chipset cầu nam. Chipset là điểm kết nối cho tất cả các bus khác trong hê thống. Các bus như PCI, AGP và memory bus đều kết nối đến chipset để dữ liệu chuyển qua lại giữa các thiết bị được kết nối. Hệ thống bus thứ cấp này luôn chạy với tốc độ được suy ra từ FSB clock, nhưng không cần đồng bộ. 16 31 Khái niệm (tt)  FSB là bus mang data và address giữa CPU và chip cầu bắc.  Tùy vào bộ xử lý được dùng, một số máy tính cũng có back side bus nối CPU với Caches, bus này và cache được nối vào đó hoạt động nhanh hơn là truy xuất bộ nhớ hệ thống qua FSB. 32 17 33 Tốc độ FSB  Băng thông hay thông lượng tối đa của FSB được xác đinh bởi tích của bề rộng đừơng dẫn data, tần số clock và số lần truyền trong một chu kỳ. Ví dụ data path=32bit, FSB clock=100MHz và 4 lần truyền/clock thì băng thông là 1600Mbps.  Tần số hoạt động của CPU được xác định bởi một bộ nhân clock, nhân tốc độ của FSB. Ví dụ tốc độ CPU là 3200 MHz dùng FSB 400 MHz, có nghĩa là CPU được đặt chạy với tốc độ gấp 8 lần tốc độ FSB. Bằng cách thay đổi FSB hay bộ nhân clock có thể lấy tốc độ CPU khác nhau.  Cài đặt tốc độ FSB liên quan trực tiếp đến tốc độ bộ nhớ. Thông thừờng memory bus và FSB có tốc độ bằng nhau. Tuy nhiên, trong các hệ thống mới tỉ số này có thể là 5:4, có nghĩa là tốc độ bus bộ nhớ chạy gấp 5/4 lần FSB, ví dụ FSB là 400MHz thì tốc độ bus bộ nhớ là 500MHz, điều này đựơc xem như hệ thống là bất đồng bộ. 34 Ưu khuyết điểm  Công nghệ FSB có ưu điểm linh hoạt và giá thành thấp. Không có giới hạn số lương CPU được đặt lên FSB, cho dù hiệu suất sẽ không thay đổi một cách tuyến tính xuyên qua các CPU gắn thêm (do cổ chai)  Ban đầu, FSB này là một trung tâm cho tất cả các thiết bị hệ thống và CPU. Những năm gần đây bắt đầu xuất hiện khuynh hướng dùng các bus điểm nối điểm độc lập. FSB bị AMD chỉ trích như một công nghệ chậm chạp lạc hậu là nguyên nhân của các cổ chai trong máy tính. Trong khi một CPU tốc độ cao có thể thực thi chỉ thị với tốc cao, nhưng nó không thể nạp chỉ thị nhanh như mong muốn khi truy xuất bộ nhớ và các thiết bị I/O bị giới hạn bởi FSB. 18 35 Ví dụ hệ thống thực tế  Mainboard Gigabyte GA-8iG1000MK  P4 Titan Series Motherboard 36 19 37 38 Bài tập 1.Tìm hiểu hoạt động truyền dữ liệu trên PCI 2.Tìm hiểu hoạt động phân xử bus trên PCI 11 HEÄ THOÁNG XUAÁT NHAÄP BÀI 11 2 THIEÁT BÒ NGOAÏI VI  Moãi thieát bò ngoaïi vi ñöôïc gaén vaøo computer qua moät lieân keát ñeán I/O module  Lieân keát ñöôïc duøng ñeå trao ñoåi control, status vaø data giöõa I/O module vôùi thieát bò ngoaïi vi. 23 Ñieàu khieån luaän lyù Boä ñeäm Boä bieán ñoåi Status (ñeán I/O module) Control (töø I/O modue) Data Data ñi vaø ñeán töø moâi tröôøng ngoaøi Thieáááát bò ngoaïïïïi vi 4 Coù ba loaiï thieát bò ngoaïi vi:  Human-readable  Machine-readable  Communication 35 I/O module  Laø thöïc theå naèm trong maùy tính chòu traùch nhieäm ñieàu khieån moät hay nhieàu thieát bò ngoaïi vi ñeå trao ñoåi data vôùi main memory vaø caùc register cuûa CPU=> I/O module coù 2 interface 6 I/O module Address bus Data bus Control bus System bus Caùc lieân keát ñeán thieát bò ngoaïi vi Moââââ hình chung cuûûûûa I/O module 47 Yeâu caàu toái thieåu veà chöùc naêng cuûa I/O module:  Ñieàu khieån vaø ñònh thôøi  Truyeàn thoâng vôùi CPU  Truyeàn thoâng vôùi ngoaïi vi  Ñeäm döõ lieäu  Phaùt hieän loãi (ví duï) 8 Thanh ghi data Thanh ghi status/control I/O logic Logic giao tieáp thieát bò ngoaïi vi Logic giao tieáp thieát bò ngoaïi vi Giao tieáp vôùi system bus Data bus Addr bus Control bus Data Status Conrol Data Status Conrol Sô ñoàààà khoáááái cuûûûûa moäääät I/O module 59 Kyõ thuaät thao taùc I/O  Programmed I/O: data ñöôïc trao ñoåi giöõa CPU vaø I/O module. CPU thöïc thi moät chöông trình maø qua ñoù ñieàu khieån hoaït ñoäng cuûa I/O  I/O duøng ngaét ñieàu khieån  I/O duøng DMA: I/O module vaø boä nhôù trao ñoåi data moät caùch tröïc tieáp. 10 Programmed I/O  CPU phaùt leänh ñeán I/O module.  I/O module thöïc hieän taùc vuï theo yeâu caàu vaø ñaët caùc bit thích hôïp trong thanh ghi traïng thaùi.  Ñònh kyø CPU phaûi kieåm tra traïng thaùi cuûa I/O module cho ñeán khi nhaän thaáy taùc vuï yeâu caàu ñaõ hoaøn taát. 611 Programmed I/O (tt)  I/O command,I/O instruction  Ñeå thöïc hieän moät instruction lieân quan ñeán I/O, CPU phaùt ra moät addr + I/O command  Coù boán loaïi I/O command  Control  Test  Read  Write  Moät I/O instruction töông öùng vôùi moät I/O command 12 Programmed I/O (tt)  Memory-mapped I/O, Isolated I/O  Laø hai cơ chế ñòa chæ trong tröôøng hôïp duøng chung bus.  Memory-mapped I/O: chæ coù moät khoâng gian ñòa chæ chung cho boä nhôù vaø thieát bò I/O, duøng caùc instruction truy xuaát gioáng nhau.  Isolated I/O: toaøn boä khoâng gian ñòa chæ khaû duïng cho caû hai, söû duïng caùc I/O command ñaëc bieät ñeå kích hoaït caùc I/O command line treân bus 713 Addr Instruction operand 200 Ld AC “1” Store AC 501 202 Ld AC 501 Branch if Sign=0 202 Ld AC 500 (a) Memory-mapped I/O Addr Instruction operand 200 Start I/O 4 201 Test I/O 4 Branch Not Ready 201 In 4 (b) Isolated I/O 7 6 5 4 3 2 1 0 500 Thanh ghi data nhaäp 7 6 5 4 3 2 1 0 501 Thanh ghi traïng thaùi vaø ñieàu khieån 1: baét ñaàu ñoïcsign=1:saün saøng 14 Interrupt-driven I/O  CPU phaùt ra leänh I/O vaø chuyeån sang phuïc vuï taùc vuï khaùc.  I/O module ngaét CPU ñeå yeâu caàu phuïc vuï  Interrupt controller 815 Cô cheá DMA  I/O Module Main Memory  Duøng DMA module  Khi CPU muoán ñoïc hay ghi moät khoái data, noù phaùt ra moät leänh ñeán DMA module keøm theo caùc thoâng tin sau:  Yeâu caàu laø ñoïc hay ghi  Ñòa chæ cuûa thieát bò  Vò trí baét ñaàu trong boä nhôù  Soá löôïng töø ñöôïc ñoïc hay ghi 16 Data count Data register Addr register Control logic Data lines Addr lines DMA REQ DMA ACK INTR Read Write Sô ñoà khoái DMA module tieâu bieåu 917 Cô cheá DMA (tieáp theo)  CPU chuyeån sang coâng vieäc khaùc sau khi ñaõ chuyeån leänh ñeán DMA module  DMA module ñöôïc giao phoù toaøn boä hoaït ñoäng I/O, noù truyeàn/nhaän toaøn boä khoái döõ lieäu laàn löôït töøng töø moät vôùi boä nhôù.  Khi hoaït ñoäng truyeàn/nhaän döõ lieäu hoaøn taát DMA module göûi moät ngaét ñeán CPU. 18 Cô cheá DMA (tt)  DMA module caàn laáy ñieàu khieån bus ñeå truyeàn data.  DMA module duøng bus khi CPU khoâng söû duïng hoaëc buoäc CPU vaøo traïng thaùi treo taïm thôøi  Kyõ thuaät buoäc CPU treo taïm thôøi laø phoå bieán vaø ñöôïc xem nhö thöïc hieän moät chu kyø chieám höõu (cycle-stealing), DMA module chieám moät chu kyø bus. 10 19 Nhöõng thôøi ñieåm DMA chieám höõu Thôøi ñieåm ngaét Laáy leänh Giaûi maõ leänh Laáy toaùn haïng Thöïc thi leänh Löu keát quaû Xöû lyù ngaét Processor Cycle Processor Cycle Processor Cycle Processor Cycle Processor Cycle Processor Cycle Processor Cycle Instruction Cycle 20 Caùc caáu hình coù theå cuûa DMA  Duøng moät DMA module duøng chung  Duøng nhieàu DMA module  Duøng I/O bus giao tieáp vôùi moät DMA module 11 21 CPU DMA module I/O I/O Memory CPU DMA module I/O DMA module Memory I/O I/O CPU DMA module Memory I/O I/O I/O I/O bus System bus 22 I/O channel  Söï tieán boä trong chöùc naêng I/O:  CPU ñieàu khieån tröïc tieáp moät thieát bò ngoaïi vi  Theâm vaøo moät I/O module. CPU duøng I/O ñöôïc laäp trình khoâng caàn ngaét  Theâm vaøo I/O module, söû duïng ngaét, CPU khoâng caàn chôø hoaït ñoäng I/O  I/O module ñöôïc trao ñoåi tröïc tieáp vôùi boä nhôù qua DMA, göûi khoái data khoâng thoâng qua CPU, ngoaïi tröø thôøi ñieåm ñaàu vaø cuoái.  I/O module ñöôïc caûi tieán ñeå trôû thaønh moät boä xöû lyù coù thaåm quyeàn rieâng, vôùi taäp leänh ñaëc bieät daønh cho I/O. CPU chæ cho boä xöû lyù naøy thöïc hieän moät chöông trình trong boä nhôù  I/O module coù boä nhôù cuïc boä vaø thöïc söï laø moät maùy tính(terminal) 12 23 I/O Channel (tt)  Moät I/O module nhaän laáy haàu heát caùc xöû lyù chi tieát vaø thöïc hieän moät giao thöùc möùc cao ñöôïc goïi laø moät I/O channel hay I/O processor  I/O channel laø môû roäng khaùi nieäm DMA. Moät I/O channel coù khaû naêng thöïc thi caùc leänh I/O, ñieàu khieån toaøn boä caùc hoaït ñoäng I/O 24 Caùc ñaëc tính cuûa I/O channel  Caùc Inst I/O naèm treân boä nhôù chính,ñöôïc thöïc hieän bôûi boä xöû lyù coù muïc ñích ñaëc bieät naèm ngay treân I/O channel.  CPU chæ ra chöông trình trong boä nhôù cho I/O channel  Chöông trình seõ chæ ra thieát bò, vuøng nhôù löu tröõ, thöù töï vaø caùc thao taùc caàn tieán haønh trong ñieàu kieän loãi naøo ñoù. I/O chanel theo caùc chæ thò naøy ñeå ñieàu khieån hoaït ñoäng truyeàn/nhaän data. 13 25 Hai kieán truùc I/O channel phoå duïng Selector I/O controller I/O controller Multiplexor I/O controller I/O controller I/O controller I/O controller Data vaø Addr Channel ñeán Main memory Ñöôøng daãn tín hieäu ñieàu khieån ñeán CPU (a) Selector (b) Multiplexor 26 Giao tieáp vôùi ngoaïi vi  Phaûi phuø hôïp vôùi baûn chaát hoaït ñoäng cuûa ngoaïi vi  Ñaëc tính quan troïng nhaát laø noái tieáp hay song song (serial vaø parallel)  I/O module phaûi daøn xeáp ñoái thoaïi vôùi ngoaïi vi. Ñoái thoaïi toång quaùt cho moät hoaït ñoäng ghi nhö sau:  I/O module göûi moät tín hieäu ñieàu khieån yeâu caàu truyeàn data  Ngoaïi vi phuùc ñaùp ACK  I/O module truyeàn data  Ngoaïi vi baùo nhaän cho töøng data nhaän ñöôïc 14 27 Hai giao tieáp quan troïng  SCSI (Small Computer System Interface)  1394 Serial Bus 1KỸ THUẬT ỐNG DẪN (PIPELINE) BÀI 13 Khái niệm  Để tăng tốc độ sản xuất Dây chuyền sản xuất  Dây chuyền có nhiều công đoạn  Các công đoạn có thể làm việc đồng thời => Quá trình sản xuất theo kiểu dây chuyền như vậy được gọi là pipelining  Quá trình thực thi chỉ thị cũng có nhiều công đoạn và có thể áp dụng khái niệm pipeline 2Ví dụ các công đoạn trong một chu kỳ chỉ thị  FI (Fetch Instruction)  DI (Decode Instruction)  CO (Calculate Operands)  FO (Fech Operands)  EI (Execute Instruction)  WO (Write Operand) Pipeline 6 tầng 3Kiến trúc máy DLX  32-bit GPRs: Có 32 thanh ghi có mục đích tổng quát, R0,R2.R31  32 thanh ghi FPRs  Data: 8,16,32 bit, floating point 32 hay 64 bit  Có thể địa chỉ theo byte  Địa chỉ 32 bit  Big endian mode Kiến trúc DLX (tt) ADD R1, R2, R3 AddRegs[R1] <- Regs[R2]+Regs[R3] ADDI R1, R2, #3 Add immediate Regs[R1] <- Regs[R2] + 3 LHI R1, #42 Load high immediate Regs[R1] <- 42##016 SLLI R1, R2, #5 Shift left logical immediate Regs[R1] <- Regs[R2] << 5 SLT R1, R2, R3 Set less than if (Regs[R2]<Regs[R3]) Regs[R1] <- 1 else Regs[R1] <- 0 4Kiến trúc DLX (tt)  Instruction fetch cycle (IF)  Instruction decode (ID)  Execution (EX)  Memory access (MEM)  Write-back (WB) Datapath 5Datapath(tt) Pipeline cơ bản cho DLX 6Các hạn chế khi độ sâu gia tăng  Thời gian thực thi không giảm  Các tầng không bằng nhau  Trễ do chốt Các tình huống rủi ro (Hazards)  Hazard ngăn cản luồng chỉ thị thực thi trong chu kỳ được gán  Có ba loại hazard:  Hazard cấu trúc  Hazard dữ liệu  Hazard điều khiển 7Hazard cấu trúc  Khi có xung đột tài nguyên  Có đơn vị chức năng không có khả năng pipeline  Tài nguyên không thể đáp ứng đủ Data Hazard  Xảy ra khi pipeline thay đổi thứ tự đọc/ghi đối với các tóan hạng khác với thứ tự khi thực thi các chỉ thị này trên máy nonpipeline. 8Data Hazard (tt) Control Hazard  Khi có sự rẽ nhánh có thể không thay đổi PC như mong muốn. 9Hazard  Hazards khiến cho phải trì hõan hoạt động. Bộ xử lý có thể dừng hoạt động vì các sự kiện:  Cache miss: dừng tất cả các chỉ thị trên pipeline trước và sau chỉ thị gây ra cache miss  Hazard: khi chỉ thị bị dừng thì các chỉ thị sau nó cũng dừng. Pipeline tuyến tính Taùc vuï T ={T1, T2,Tk}  Quan heä tröôùc sau: vaøi taùc vuï Tj khoâng theå thöïc hieän ñöôïc cho ñeán khi vaøi taùc vuï Ti tröôùc ñoù hoaøn taát (i<j)  Quan heä tröôùc sau tuyeán tính: Taát caû caùc taùc vuï Ti phaûi hoaøn taát  Moät pipe line tuyeán tính coù theå xöû lyù moät loaït caùc taùc vuï con coù quan heä tröôùc sau tuyeán tính 10 S1 S2 Sk Choát Choát taùch bieät giöõa caùc taàng laø caùc thanh ghi toác ñoä cao naém giöõ caùc keát quaû lieân thoâng giöõa caùc taàng. Luoàng thoâng tin giöõa caùc taàng ñöôïc ñieàu khieån bôûi moät ñoàng hoà chung aùp ñaët vaøo caùc choát moät caùch ñoàng thôøi. Chu kyø ñoàng hoà  Goïi Ti laø thôøi gian treã taïi taàng Si, goïi Tl laø thôøi gian treã taïi moãi choát giao tieáp. Chu kyø ñoàng hoà ñöôïc ñònh nghóa T = max {Ti}k + Tl = Tm + Tl Nghòch ñaûo cuûa T laø taàn soá cuûa boä xöû lyù pipeline 11 T11 T12 T13 T14 T15 T16 T21 T22 T23 T31 T41 T51 Khoâng gian Thôøi gian Tij taùc vuï con thöù i trong taùc vuï thöù j T61  Khi pipeline ñöôïc laøm ñaày noù xuaát keát quaû trong 1 chu kyø  Lyù töôûng moät pipeline k taàng coù theå xöû lyù n taùc vuï trong Tk=k + (n-1) chu kyø. Trong ñoù k ñeå laøm ñaày hay hoaøn taát taùc vuï thöù nhaát vaø n-1 ñeå hoaøn taát n-1 taùc vuï coøn laïi.  Ñoái vôùi boä xöû lyù nonpipeline thì Tn= n.k  Ñoä taêng toác S=Tn/Tk 1THỰC TẬP Tìm hiểu và sử dụng các phần mềm CPUZ, Portable Everest, HDtune để kiểm tra tổng quát máy tính Nội dung 1 2Nội dung 2  Tìm hiểu và sử dụng bộ mô phỏng máy tính MARIE  Dùng hợp ngữ MARIE để viết chương trình  Chạy chương trình  Theo dõi hoạt động Máy MARIE (the Machine Architecture that is Really Intuitive and Easy )  Các thuộc tính kiến trúc:  Binary, biểu diễn data theo số bù 2.  Stored program, chỉ thị và data có chiều dài (words) cố định.  Bộ nhớ chính địa chỉ hóa theo word, dung lượng 4K words.  data word có chiều dài 16-bit.  16-bit instructions, 4-bit cho opcode và 12-bit cho địa chỉ.  16-bit arithmetic logic unit (ALU).  Có bảy thanh ghi điều khiển và dữ liệu 3Các thanh ghi trong MARIE  Accumulator, AC, 16-bit , lưu toán tử điều kiện (ví dụ “nhỏ hơn”) hay một toán hạng của các chỉ thị có hai toán hạng.  MAR, 12-bit, lưu địa chỉ bộ nhớ của chỉ thị hay toán hạng.  MBR, 16-bit, lưu data sau khi lấy từ bộ nhớ hay trước khi ghi vào bộ nhớ. Các thanh ghi (tt)  Program counter, PC, 12-bit.  Instruction register, IR,  Input register, InREG, 8-bit, lưu data đọc từ một thiết bị nhập.  Output register, OutREG, 8-bit, lưu data sẵn sàng cho thiết bị xuất 4 5Jump Indirect<indirect addressJumpIC Add Indirect<indirect address>AddIB Clear the AC to all zerosClearA Jump to operand addressJump9 Skip the next instruction when AC > 0800 Skip the next instruction when AC = 0400 Skip the next instruction when AC < 0000 Skipcond8 Stop the MARIE machineHalt7 Output contents of AC to the displayOutput6 Input a value from the keyboard into ACCESS-LISTInput5 Subtract contents of operand address from ACCESS-LISTSubt4 Add contents of operand address to ACCESS-LISTAdd3 Store contents of AC at operand addressStore2 Load contents of operand address into ACCESS-LISTLoad1 Jump to subroutine at operand address + 1 (Saves return address at operand address)JnS0 DescriptionOperandInstruction Opcode (Hex ) Lưu ý rằng chỉ thị Skipcond, Jump, và JumpI thay đổi tuần tự của chương trình, được dùng khi muốn thực hiện điều gì đó tùy vào giá trị của dữ liệu. 1. Viết chương trình xuất ra số lớn nhất trong chuỗi 5 số a,b,c,d và e được nhập vào từ bàn phím. 2. Viết chương trình nhân hai số a và b TAÄP LEÄNH CUÛA MAÙY TÍNH IAS_Von Neumann Caùc leänh chuyeån döõ lieäu Maõ leänh Cuù phaùp Muïc ñích 00001010 Load MQ Chuyeån noäi dung cuûa thanh ghi MQ vaøo thanh ghi AC 00001001 Load MQ,M(X) Chuyeån noäi dung cuûa vò trí boä nhôù X vaøo MQ 00100001 Stor M(X) Chuyeån noäi dung cuûa AC vaøo vò trí nhôù X 00000001 Load M(X) Chuyeån noäi dung taïi vò trí X vaøo AC 00000010 Load –M(X) Chuyeån –M(X) vaøo AC 00000011 Load |M(X)| Chuyeån giaù trò tuyeät ñoái cuûa M(X) vaøo AC 00000100 Load -|M(X)| Chuyeån -|M(X)| vaøo AC Caùc leänh reõ nhaùnh voâ ñieàu kieän 00001101 Jump M(X,0:19) Laáy chỉ thị keá tieáp laø phần traùi cuûa M(X) 00001110 Jump M(X,20:39) Laáy chỉ thị keá tieáp laø phần phaûi cuûa M(X) Caùc leänh reõ nhaùnh coù ñieàu kieän 00001111 Jump+ M(X,0:19) Neáu giaù trò trong AC laø khoâng aâm thì laáy chi  thị keá tieáp laø phần traùi cuûa M(X) 00010000 Jump+ M(X,20:39) Neáu giaù trò trong AC laø khoâng aâm thì laáy chi  thị keá tieáp laø phần phaûi cuûa M(X) Caùc leänh tính toaùn 00000101 Add M(X) Coäng M(X) vôùi AC vaø ñaët keát quaû vaøo AC 00000111 Add |M(X)| Coäng |M(X)| vôùi AC vaø ñaët keát quaû vaøo AC 00000110 Sub M(X) Tröø AC ñi M(X), ñaët keát quaû taïi AC 00001000 Sub |M(X)| Tröø AC ñi |M(X)|, ñaët keát quaû taïi AC 00001011 Mul M(X) Nhaân M(X) vôùi MQ; ñaët caùc bit coù yù nghóa lôùn nhaát vaøo AC vaø caùc bit coù nghóa thaáp hôn vaøo MQ 00001100 Div M(X) Chia AC cho M(X); ñaët thöông soá vaøo MQ vaø phaàn dö vaøo AC 00010100 LSH Nhaân AC cho 2, dòch traùi moät vò trí bit 00010101 RSH Chia AC cho 2, dòch phaûi moät vò trí bit Caùc leänh thay ñoåi ñòa chæ 00010010 Stor M(X,8:19) Thay theá phaàn ñòa chæ traùi taïi M(X) baèng 12 bit tính töø beân phaûi cuûa AC 00010011 Stor M(X,28:39) Thay theá phaàn ñòa chæ phaûi taïi M(X) baèng 12 bit tính töø beân phaûi cuûa AC

Các file đính kèm theo tài liệu này:

  • pdftailieu.pdf
Tài liệu liên quan