(NB) Giáo trình Kiến trúc máy tính cung cấp cho người học những kiến thức như: Tổng quan; Kiến trúc phần mềm bộ xử lý; Tổ chức bộ nhớ; Bộ nhớ; Thiết bị lưu trữ; Ngôn ngữ Assembly; Mời các bạn cùng tham khảo nội dung giáo trình phần 2 dưới đây.
Chương Bộ nhớ Mục tiêu Mô tả cấp nhớ cách thức vận hành loại nhớ giới thiệu để đánh giá hiệu hoạt động loại nhớ 4.1 Các loại nhớ 4.1.1 ROM (Read Only Memory) a Đặc điểm ROM Bộ nhớ đọc ROM chế tạo công nghệ bán dẫn Bộ nhớ mà phần tử nhớ có trạng thái cố định, thông tin lưu giữ ROM cố định chí khơng bị điện Chương trình ROM viết vào lúc chế tạo ROM nhớ khơng khả biến Lưu trữ thông tin sau: Thư viện chương trình Các chương trình điều khiển hệ thống (BIOS) Các bảng chức Vi chương trình b Các loại ROM ROM mặt nạ: thông tin ghi sản xuất, đắt PROM (Programmable ROM): Cần thiết bị chuyên dụng để ghi chương trình ghi lần EPROM (Erasable PROM): Cần thiết bị chuyên dụng để ghi chương trình ghi nhiều lần Trước ghi lại, xóa tia cực tím EEPROM (Electrically Erasable PROM): Có thể ghi theo byte, xóa điện Flashmemory (Bộ nhớ cực nhanh): Ghi theo khối, xóa điện 4.1.2.RAM (Random Access Memory) a Đặc điểm RAM loại nhớ máytính RAM gọi nhớ truy cập ngẫu nhiên có đặc tính: thời gian thực thao tác đọc ghi ô nhớ nhau, cho dù vị trí 36 nhớ Mỗi ô nhớ RAM có địa Thơng thường, nhớ byte (8 bit); nhiên hệ thống lại đọc hay ghi vào nhiều byte (2, 4, byte) Bộ nhớ (RAM) đặc trưng dung lượng tổ chức (số nhớ số bit cho ô nhớ), thời gian thâm nhập (thời gian từ lúc đưa địa ô nhớ đến lúc đọc nội dung ô nhớ đó) chu kỳ nhớ (thời gian hai lần liên tiếp thâm nhập nhớ) Mục đích: Máy vi tính sử dụng RAM để lưu trữ mã chương trình liệu suốt trình thực thi Đặc trưng tiêu biểu RAM truy cập vào vị trí khác nhớ hoàn tất khoảng thời gian tương tự, ngược lại với số kỹ thuật khác, đòi hỏi phải có khoảng thời gian trì hỗn định b Các loại RAM Tuỳ theo công nghệ chế tạo, người ta phân biệt RAM tĩnh (SRAM: Static RAM) RAM động (Dynamic RAM) RAM tĩnh chế tạo theo công nghệ ECL (CMOS BiCMOS) Mỗi bit nhớ gồm có cổng logic với độ transistor MOS, việc nhớ liệu tồn nhớ cung cấp điện SRAM nhớ nhanh, việc đọc không làm huỷ nội dung ô nhớ thời gian thâm nhập chu kỳ nhớ RAM động dùng kỹ thuật MOS Mỗi bit nhớ gồm có transistor tụ điện Cũng SRAM, việc nhớ liệu tồn nhớ cung cấp điện Việc ghi nhớ dựa vào việc trì điện tích nạp vào tụ điện việc đọc bit nhớ làm nội dung bit bị huỷ Vậy sau lần đọc ô nhớ, phận điều khiển nhớ phải viết lại ô nhớ nội dung vừa đọc chu kỳ nhớ động gấp đơi thời gian thâm nhập ô nhớ Việc lưu giữ thông tin bit nhớ tạm thời tụ điện phóng hết điện tích nạp vào phải làm tươi nhớ sau 2µs Làm tươi nhớ đọc ô nhớ viết lại nội dung vào lại nhớ Việc làm tươi thực với tất ô nhớ nhớ Việc làm tươi nhớ thực tự động vi mạch nhớ Bộ nhớ DRAM chậm rẻ tiền SRAM 37 Hình 4.1: SRAM DRAM Các loại DRAM SDRAM (Viết tắt từ Synchronous Dynamic RAM) gọi DRAM đồng SDRAM gồm phân loại: SDR, DDR, DDR2 SDR SDRAM (Single Data Rate SDRAM), thường giới chuyên môn gọi tắt "SDR" Có 168 chân, có tốc độ 33Mhz, 66Mhz, 100Mhz 133Mhz Được dùng máy vi tính cũ, bus speed chạy vận tốc với clock speed memory chip, lỗi thời DDR SDRAM (Double Data Rate SDRAM), thường giới chuyên môn gọi tắt "DDR" Có 184 chân DDR SDRAM cải tiến nhớ SDR với tốc độ truyền tải gấp đôi SDR (200Mhz, 266Mhz, 333Mhz, 400Mhz, ) nhờ vào việc truyền tải hai lần chu kỳ nhớ Đã thay DDR2 Hầu hết mainboard đời hỗ trợ DDR (và không hỗ trợ SDRAM) DDR2 SDRAM (Double Data Rate SDRAM), Thường giới chuyên môn gọi tắt "DDR2" Là hệ thứ hai DDR với 240 chân, lợi lớn so với DDR có bus speed cao gấp đôi clock speed RDRAM (Viết tắt từ Rambus Dynamic RAM), thường giới chuyên môn gọi tắt "Rambus" Đây loại DRAM thiết kế kỹ thuật hoàn toàn so với kỹ thuật SDRAM RDRAM hoạt động đồng theo hệ thống lặp truyền liệu theo hướng Một kênh nhớ RDRAM hỗ trợ đến 32 chip DRAM Mỗi chip ghép nối module gọi RIMM (Rambus Inline Memory Module) việc 38 truyền liệu thực mạch điều khiển chip riêng biệt không truyền chip với Bus nhớ RDRAM đường dẫn liên tục qua chip module bus, module có chân vào đầu đối diện Do đó, khe cắm không chứa RIMM phải gắn module liên tục để đảm bảo đường truyền nối liền Tốc độ Rambus đạt từ 400-800 MHz Rambus không nhanh SDRAM bao lại đắt nhiều nên có người dùng RDRAM phải cắm thành cặp khe trống phải cắm RAM giả (còn gọi C-RIMM) cho đủ 4.1.3 Thiết kế mơdun nhớ bán dẫn - Tổ chức chíp nhớ Hình 4.2 Tổ chức chíp nhớ Các tín hiệu chíp nhớ Các đường địa chỉ:An-1->A0:có 2n từ nhớ Các đường liệu:Dn-1 ->D0: độ dài từ nhớ m bit Dung lượng chip nhớ: 2n x m bit Các đường điều khiển: Tín hiệu chọn chip CS (Chip Select) Tín hiệu điều khiển đọc OE(output Enable) Tín hiệu điều khiển ghi wE(write enable) Dung lượng chip nhớ=2n xm bit Cần thiết kế để tăng dung lượng: Thiết kế tăng độ dài từ nhớ 39 Thiết kế tăng số lượng từ nhớ Thiết kế kết hợp * Tăng độ dài từ nhớ Ví dụ : Cho chip nhớ SRAM 4K x bit Thiết kế môdun nhớ 4K x bit Giải: Dung lượng chip nhớ=212 x bit Chip nhớ có 12 chân địa chỉ, chân liệu Mơdun nhớ cần có:12 chân địa chỉ, chân liệu * Tăng số lượng từ nhớ Ví dụ: Cho chip nhớ SRAM 4K x8 bit Thiết kế môdun nhớ 8K x bit Giải: Dung lượng chip nhớ = 212 x bit Chip nhớ có:12 chân địa chỉ, chân liệu Dung lượng môdun nhớ:213 x bit 13 chân địa chỉ, chân liệu 4.2 Các cấp nhớ Các đặc tính lượng thơng tin lưu trữ, thời gian thâm nhập nhớ,chu kỳb ộ nhớ, giá tiền bit nhớ khiến ta phải phân biệt cấp nhớ: nhớ nhanh với dung lượng đến nhớ chậm với dung lượng lớn BỘ VI XỬ LÝ CP U T ập ghi B ộ nhớ Cach e L B B B ộ nhớ ộ nhớ ộ nhớ Cach ngồi Hình e L24.3: Các cấp nhớ 40 B ộ nhớ mạng Ta nhận thấy từ trái sang phải: dung lượng tăng dần, tốc độ giảm dần, giá thành/1bit giảm dần Máy tính lưu trữ liệu theo cấu trúc phân cấp tương tự Khi ứng dụng khởi động, liệu lệnh chuyển từ đĩa cứng tốc độ chậm sang nhớ (RAM động hay DRAM), nơi mà CPU truy xuất nhanh DRAM hoạt động vùng đệm cho đĩa Mặc dù DRAM nhanh đĩa cứng, cịn bị hạn chế Vì thế, liệu thường dùng đến chuyển lên loại nhớ nhanh gọi nhớ đệm cấp (L2) Loại nhớ nằm RAM tĩnh cạnh bên CPU, CPU loại thường kết hợp nhớ đệm L2 chip xử lý Ở cấp cao nhất, thông tin thường sử dụng nhất, ví dụ lệnh vịng lặp thực thi lặp lặp lại, lưu trực tiếp vùng đặc biệt xử lý gọi nhớ đệm cấp (L1) Đây loại nhớ nhanh Bộ nhớ đệm L2 nằm CPU có tốc độ truy xuất nhanh gấp bốn lần so với trường hợp nằm chip riêng Khi xử lý cần thực thi câu lệnh đó, tìm kiếm ghi liệu riêng Nếu liệu cần thiết khơng có đó, tìm nhớ đệm L1 sau L2, nhớ đệm khơng có gọi đến nhớ RAM Cuối cùng, liệu khơng có hệ thống phải lấy liệu từ đĩa cứng Các đặc tính cấp nhớ dẫn đến hai mức là: mức cache - nhớ mức nhớ ảo (bao gồm nhớ không gian cấp phát đĩa cứng) Cách tổ chức suốt người sử dụng Người sử dụng thấy không gian định vị ô nhớ, độc lập với vị trí thực tế lệnh liệu cần thâm nhập 41 Hình 4.4: Hai mức nhớ Các cấp nhớ giúp ích cho người lập trình muốn có nhớ thật nhanh với chi phí đầu tư giới hạn Vì nhớ nhanh đắt tiền nên nhớ tổ chức thành nhiều cấp, cấp có dung lượng nhanh đắt tiền cấp có dung lượng cao Mục tiêu việc thiết lập cấp nhớ người dùng có hệ thống nhớ rẻ tiền cấp nhớ thấp gần nhanh cấp nhớ cao Các cấp nhớ thường lồng vào Mọi liệu cấp gặp lại cấp thấp tiếp tục gặp lại cấp thấp Chúng ta có nhận xét rằng, cấp nhớ có dung lượng lớn cấp mình, ánh xạ phần địa nhớ vào địa nhớ cấp trực tiếp có tốc độ nhanh hơn, cấp nhớ phải có chế quản lý kiểm tra địa ánh xạ 4.3 Truy cập liệu nhớ Cache nhớ nhanh, chứa lệnh liệu thường xuyên dùng đến Việc lựa chọn lệnh liệu cần đặt vào cache dựa vào nguyên tắc sau đây: Một chương trình 90% thời gian thi hành lệnh để thi hành 10% số lệnh chương trình Nguyên tắc áp dụng cho việc thâm nhập liệu, hiệu nghiệm việc thâm nhập lệnh Như có hai nguyên tắc: nguyên tắc không gian nguyên tắc thời gian 42 Nguyên tắc thời gian: cho biết ô nhớ hệ thống xử lý thâm nhập có khả thâm nhập tương lai gần Thật vậy, chương trình cấu tạo với phần phần thi hành nhiều phần phụ dùng để xử lý trường hợp ngoại lệ Cịn số liệu ln có cấu trúc thơng thường có phần số liệu thâm nhập nhiều mà Nguyên tắc không gian: cho biết, xử lý thâm nhập vào nhớ có nhiều khả thâm nhập vào ô nhớ có địa lệnh xếp thành chuỗi có thứ tự Tổ chức cấp nhớ cho lệnh liệu thường dùng nằm nhớ cache, điều làm tăng hiệu máy tính cách đáng kể 4.4 Bộ nhớ Cache 4.4.1 Cache (bộ nhớ đệm nhanh) - Cache có tốc độ nhanh nhớ - Cache đặt CPU nhớ - Nhằm tăng tốc độ truy cập nhớ CPU - Cache đặt chip CPU C PU C ache B ộ nhớ Truyền Truyền theo 4.5: Bộnhớ nhớ Cache theo từ nhớ Hình block + Ví dụ thao tác cache: CPU yêu cầu nội dung ngăn nhớ CPU kiểm tra cache với liệu Nếu có, CPU nhận liệu từ cache (nhanh) Nếu khơng có, đọc block nhớ chứa liệu từ nhớ vào cache Tiếp chuyển liệu từ cache vào CPU 43 4.4.2 Tổ chức cache + Cấu trúc chung cache / nhớ Hình 4.6 Cấu trúc cache nhớ Bộ nhớ có N byte nhớ - Bộ nhớ cache chia thành khối có kích thước - Bộ nhớ chính: B0, B1, B2, , Bp-1 (p Blocks) - Bộ nhớ cache: L0, L1, L2, , Lm-1 (m Lines) - Kích thước Block = 8, 16, 32, 64, 128 byte Một số Block nhớ nạp vào Line cache Nội dung Tag (thẻ nhớ) cho biết Block nhớ chứa Line Khi CPU truy nhập (đọc/ghi) từ nhớ, có hai khả xảy ra: - Từ nhớ có cache (cache hit) - Từ nhớ khơng có cache (cache miss) Vì số line cache số block nhớ nên cần có thuật giải ánh xạ thơng tin nhớ cache 4.4.3 Các phương pháp ánh xạ địa a Ánh xạ trực tiếp Mỗi Block nhớ nạp vào Line cache: 44 B0 L0 B1 L1 Bm-1 Lm-1 B m L0 Bm+1 L1 Tổng quát: Bj nạp vào Lj mod m , m số Line cache Hình 4.7: Sơ đồ ánh xạ trực tiếp Đặc điểm ánh xạ trực tiếp: + Mỗi địa N bit nhớ gồm ba trường: Trường Word gồm W bit xác định từ nhớ Block hay Line: 2W = kích thước Block hay Line Trường Line gồm L bit xác định số Line cache: 2L = số Line cache = m Trường Tag gồm T bit: T = N - (W+L) + Bộ so sánh đơn giản + Xác suất cache hit thấp 45 MOV [ BX ], AX Code Ends End Begin Lệnh XCHG : (Exchange) * Cú pháp : XCHG < đích > ,< nguồn > Tốn hạng < nguồn > < đích > ghi hay nhớ * Công dụng : dùng để hoán chuyển nội dung hai toán hạng < đích > * Ghi : - Lệnh không ảnh hưởng đến cờ hiệu - Khơng dùng lệnh với ghi đoạn Ví dụ : A DW B DW 1234h 3456h MOV AX , A XCHG AX , B MOV A , AX Lệnh PUSH * Cú pháp : PUSH < nguồn > < Nguồn >: Có thể ghi hay nhớ 16 bit * Công dụng : Dùng để nạp nội dung toán hạng < nguồn > vào stack ( chồng) ghi SP giảm hai đơn vị Lệnh POP * Cú pháp : POP < đích > Ngược lại với lệnh PUSH lệnh POP lấy nội dung đỉnh STACK đưa vào toán hạng đỉnh SP tăng lên hai đơn vị * Lưu ý : 67 Để cất giữ ghi việc sử dụng lệnh PUSH , lệnh POP dùng lệnh POP ta phải lấy ngược với lệnh PUSH Ví dụ : PUSH AX PUSH BX PUSH CX Ta dùng lệng POP ngược lại với PUSH POP CX POP BX POP AX Lệnh XLAT * Cú pháp : XLAT * Công dụng : Dùng để chuyển nội dung số ô nhớ (8 bit ) vào ghi AL * Ghi : DS :BX chứa địa offset vùng nhớ AL chứa thứ tự nhớ b Nhóm lệnh tính tốn số học Nhóm lệnh xử lý phép cộng Lệnh ADD: ( Addition ) Cú pháp : ADD < Dest > , < Source > < Dest > = < Dest > + < Source > Dest : Là ghi hay nhớ Source : Là ghi hay nhớ hay trực Chức : Dùng để cộng không nhớ toán hạng Dest toán hạng Source , kết lưu vào toán hạng Dest Lệnh ảnh hưởng đến cờ : SF, CF , OF , AF, PF, ZF LệnhADC ( Addition With Carry ) Cú pháp : ADC < Dest > , < Source > < Dest > = < Dest > + < Source > + CF Tương tự lênh ADD , lệnh ADC thực phép cộng có nhớ 68 Lệnh ADC lấy toán hạng < Dest > + < Source> + cờ CF, kết lưu vào toán hạng Dest , lệnh thường dùng cho phép cộng lớn 16 bít Lệnh INC : ( Increment ) Cú pháp : INC < Dest > < Dest > = < Dest > + Dest : Có thể ghi hay nhớ Lệnh ảnh hưởng đến cờ : OF , ZF , PF , AF , SF Ví dụ : Cho hai số A, B dạng double word chứa hai số nguyên không dấu , Viết chương trình cộng hai số A , B Kết đưa vào biến C , có sử lý trường hợp tràn số Code SEGMENT ASSUME CS : Code , DS : Code ORG 100h Begin : Code MOV AX , Word PTR A MOV BX , Word PTR A+2 ADD AX , Word PTR B ADC BX , Word B+2 MOV Word Int 20h PTR C+2 , A DD 7000F000h B DD 90002000h C DB Dup( ) ENDS END Begin Nhóm lệnh xử lý phép trừ Lệnh SUB ( Subtract) * Cú pháp: SUB < dest>, < Dest >= - 69 Source :có thể ghi hay nhớ Lệnh source lấy nội dung toán hạng dest trừ toán hạng source kết lưu vào dest Ví dụ : Mov AX , 1234h Sub AX , 0345h; AX = 1234h - 0345h Lệnh Sub ảnh hưởng đến sáu cờ 0F , CF , AF , PF , SF ,ZF Lệnh SBB ( Subtract with Borrow) * Cú pháp: SBB < dest > , < source > < Dest > = < Dest > - < Source > - CF Lệnh SBB lấy toán hạng < Dest > - < Source > trừ thêm cờ CF , kết lưu vào toán hạng Dest LệnhDEC ( Decrement) * Cú pháp: DEC < Dest > < Dest > = < Dest > -1 Lệnh Dest lệnh giảm đơn vị Lệnh ảnh hưởng đến Cờ Cờ CF không ảnh hưởng tới Lưu ý : Lệnh SBB sử dụng cho trường hợp số lớn 16 bít Ví dụ : Viết chương trình trừ số :A=70002000h , B=90003000h,kết lưu vào nhớ C = Byte Nếu byte cao C =1 kết số âm , ngược lại số dương Code Segment Assume CS :Code ORG 100h Mov AX , Word PTR A Mov BX , Word A+2 Begin: PTR SUB AX , Word PTR B SUB BX , Word PTR B+2 70 Mov Word PTR C , AX Mov Word PTR C+2 , BX ADC Word PTR C +4 Int Code 20h A DB 70002000h B DB 90003000h C DB Dup ( ? ) Ends End Begin Nhóm lệnh xử lý phép nhân Lệnh MUL ( Multiply) * Cú pháp: MUL < Source> < Source> ghi hay nhớ bít hay 16 bít Trường hợp : Nếu < Source > có độ dài bít lệnh MUL lấy nội dung ghi AL nhân với source, kết lưu vào ghi AX Trường hợp 2: Nếu source có độ dài 16 bít lệnh MUL lấy nội dung ghi AX nhân với sourrce , kết 32 bít :16 bít thấp lưu vào AX, 16 bit cao lưu vào DX Ví dụ : Mov AL , 12h Mov BL , 10h MUL BL ; BL = 120h , AX = 0120h Mov AX ,1234h Mov BX , 100h MUL BX Nhóm lệnh xử lý phép chia Lệnh DIV * Cú pháp: DIV < Source > Tương tự phép nhân < source > có trường hợp 71 Trường hợp 1:Nếu source có độ dài bít lệnh DIV lấy nội dung ghi AX chia cho source , thương số phép chia lưu ghi AL dư số lưu AH Trường hợp :Nếu source 16 bít lệnh DIV lấy nội dung cặp ghi DX : AX chia cho toán hạng source , thương số lưu AX , dư số lưu DX Ví dụ : Mov AX , 0234h Mov BL , 10h DIV BL ; AL = 23h , AH = 04h Mov AX , 1234h Mov DX , 0567h Mov BX , 100h DIV BX ; AX = 567h , DX = 0234h Ghi : Muốn in số >= kí số chia liên tiếp số cho 10 đến thương số = Sau phép chia cất dư số vào stack , sau thương số = muốn in ta lấy gía trị đỉnh Stack đưa hình 6.3.2 Các lệnh chuyển điều khiển a So sánh * Cú pháp: CMP < Left >, < Right > Left : Là ghi hay nhớ Right : Là ghi hay nhớ hay trực Ví dụ : CMP AL,0Dh * Công dụng : Dùng để so sánh toán hạng Left toán hạng Right Lệnh Assemble lấy toán hạng Left trừ toán hạng Right kết lưu cờ mà khơng thay đổi nội dung hai tốn hạng Kết phép so sánh : a) Đối với số không dấu : 72 CỜ ZF Left > Right CF Left = Right Left < Right 0 b) Đối Với Số Có Dấu : CỜ ZF OF Left > Right SF Left = Right Left < Right 0/1 0/1 Ví dụ : 0 /0 0/1 Mov AX , 6000h CMP AX , -7000h 6000h - ( -7000h ) b Lệnh lặp Lệnh Loop : * Cú pháp : Loop * Cơng dụng : Dùng để lặp vịng Nếu ghi CX khác lệnh Loop chuyển điều khiển đến lệnh kế sau nhãn gỉam ghi CX đơn vị Nếu CX=0 lệnh nằm phía sau lệnh Loop thực thi Ví dụ : Mov AH , 01h Mov CX , Lặp : 73 Loop lặp Nhóm Lệnh Lặp Có Điều Kiện : a LoopE / LoopZ Lặp CX khác ZF = b LoopNE / LoopNZ < Nhãn > Lặp CX khác ZF = Ví dụ : Viết chương trình nhập từ bàn phím chuỗi tối đa 80 kí tự Sau tìm kí tự chữ 'a' chuỗi vừa nhập vào , in kết Code SEGMENT ASSUME ORG CS : Code , DS : Code 100h Begin : Mov AH , 09h Mov DX , Offset Int 21h Mov DX , Offset Maxtype Mov AH , 0Ah Int 21h Mov BX , Offset Len Mov CL , [ BX ] Mov CH , Mov BX , Offset Buffer - Mov AL , 'a' INC BX Lặp: CMP AL , [ BX ] LoopNE JE JMP Lặp thấy không thấy 74 mess1 Thấy: Mov AH , 09h Mov DX , Offset mess2 Int 21h JMP thoat Mov AH , 09h Mov DX , Offset mess3 Int 21h Int 20h Không thấy : thoat : mess3 DB ' Khơng tìm thấy $' mess2 DB ' Đã tìm thấy $' mess1 DB ' Nhập chuỗi (< 80 ) kí tự ' Maxtype DB 81 Len DB Buffer DB 81 Dup( ? ) Code ENDS END Begin c Lệnh nhảy Lệnh nhảy không điều kiện Cú pháp : JMP < Nhãn > Lệnh nhảy có điều kiện a) Nhóm Lệnh Nhảy Dùng Cho Số Không Dấu LỆNH JA JAE JNA JNAE JB ĐIỀU KIỆN (>) (>=) (=) JNG (