Professional Documents
Culture Documents
Inthi Official
Inthi Official
- Thao tác và lưu trữ dữ liệu trong bộ nhớ theo 2 nguyên tắc:
+ Alignment Restriction: từ nhớ phải bắt đầu tại địa chỉ là bội số của4.
+ Big Endian: Lưu trữ theo thứ tự byte từ trái sang phải.
- Toán hạng: add; addi; sub; subi; mult $s0, $s1 -> $hi $lo; div $s0 $s1 -> $lo
(thương) $hi (dư); Lấy giá trị từ $hi $lo: -> mflo $s0 hay mfhi $s0;
- Tràn số:
+ Kết quả phép tinh vượt qua miền giá trị cho phép -> Tràn số xảy ra
+ add, addi, sub: Phát hiện tràn số
+ addu, addiu, subu: Không phát hiện tràn số Bộ nhớ:
- Toán luận lý:
+ and, or, nor: Toán hạng nguồn thứ 2 (opr2) phải là thanh ghi (a nor b = not (a
or b))
+ andi, ori: Toán hạng nguồn thứ 2 (opr2) là hằng số
- Dịch:
+ Dịch trái luận lý (sll – shift left logical): Thêm vào các bit 0 bên phải
+ Dịch phải luận lý (srl – shift right logical): Thêm vào các bit 0 bên trái
+ Dịch phải số học (sra – shift right arithmetic): Thêm các bit = giá trị
bit dấu bên trái.
- Di chuyển dữ liệu:
+ Load word: lw $t0, 12($s0) -> lấy word ở $s0 + 12 lưu vào $t0
+ Save word: sw $t0, 12($s0) -> lưu word $t0 vào $s0 + 12
- $s0 là thanh ghi cơ sở (base register), 12 là độ dời (offset); Một thanh ghi có - RAID:
thể lưu bất kỳ giá trị 32-bit nào; + RAID 0: 2 đĩa lưu trữ xen kẽ nhau
- Ví dụ: A[12] = h - A[8] => lw $t0, 32($s3) -> sub $t0, $s2, $t0 -> sw $t0, + RAID 1: 2 đĩa cùng lưu trữ 1 kiểu dữ liệu
48($s3); 32 và 48 là bội số 4 của 8 và 12. + RAID 5: 4 đĩa lưu trữ. 1 dữ liệu sẽ chia ra 3 phần lưu ở 3 đĩa và lưu toàn bộ ở
+ Load byte: lb $s0, 3($s1) 1 đĩa. Ổ đĩa lưu toàn bộ dữ liệu sẽ xen kẽ nhau giữa 4 đĩa để tối ưu ổ cứng.
- Rẽ nhánh: (sử dụng 3 ổ đĩa vật lý trở lên)
+ beq opr1, opr2, label: if (opr1 == opr2) goto label - Nguyên lý cơ sở khi truy xuất:
+ bne opr1, opr2, label: if (opr1 != opr2) goto label + Temporal locality (Cục bộ về thời gian): Nếu một ô nhớ được dùng đến ở thời
+ j label: Jump to label <=> beq $0, $0, label điểm hiện tại, nó dễ có khả năng được dùng đến lần nữa trong tương lai gần
+ slt opr1, opr2, opr3: opr2 < opr3 ? opr1 = 1 : opr1 = 0; + Spatial locality (Cục bộ về không gian): Nếu một ô nhớ được dùng đến ở thời
- So sánh == -> Dùng lệnh beq điểm hiện tại, những ô lân cận dễ có khả năng sắp được dùng đến
- So sánh != -> Dùng lệnh bne - Ánh xạ: trực tiếp (Mỗi Block của BNC chỉ có thể được nạp
- So sánh < và > -> Dùng cặp lệnh (slt à bne) vào 1 Line của cache), liên kết toàn phần (Mỗi Block có thể nạp vào bất kỳ Line
- So sánh ≤ và ≥ -> Dùng cặp lệnh (slt à beq) nào của Cache), liên kết tập hợp (Cache được chia thành các Tập (Set)).
- Nguyên tắc: $0: (Không thay đổi) Luôn bằng 0; $s0 - $s7: (Khôi phục lại nếu thay - Thuật toán thay thế: Random, FIFO (First in first out), LFU (Least Frequenly
đổi); $sp: stack (Khôi phục lại nếu thay đổi); $ra: (Có thể thay đổi); $v0 - $v1: Used), LRU (Least Recently Used).
chứa kết quả (Có thể thay đổi); $a0 - $a1: chứa đối số (Có thể thay đổi); $t0 - $t9: - Chính sách đồng bộ (Write Policy):
temp (Có thể thay đổi). + Nếu 1 Line bị thay đổi trong Cache, khi nào sẽ thực hiện thao tác ghi lên lại
X86-32: RAM: Write Through: ngay lập tức; Write Back: khi Line này bị thay thế.
- x86-32 bit sử dụng kiến trúc thanh ghi-bộ nhớ + Nếu nhiều processor chia sẻ RAM, mỗi processor có cache riêng: Bus
- x86-32 bit sử dụng kiến trúc 2 toán hạng watching with WT: loại bỏ Line khi bị thay đổi trong 1 cache khác; Hardware
- Theo nguyên tắc Little Endian: Lưu trữ theo thứ tự phải sang trái transparency: tự động cập nhật các cache khác khi Line bị 1 cache thay đổi;
- Thanh ghi: Noncacheable shared memory: phần bộ nhớ dùng chung sẽ không
được đưa vào cache