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
Trang 1KIẾN TRÚC MÁY TÍNH
Nguyễn Hồng Sơn
Trang 2Bài 1 GIỚI THIỆU
Kiến trúc & Tổ chức máy tính
Trang 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
Trang 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.
Trang 6Cơ cấu vận chuyển data
Cơ cấu điều kiển
Phương tiện Phương tiện
Nguồn và đích của data
Trang 77
Trang 8Các thành phần trong cấu trúc máy tính
Có bốn thành phần chính:
•CPU: Điều khiển các hoạt động và thực hiện các chức năng xử lý data
•Main memory: Lưu trữ data
•I/O: vận chuyển data giữa máy tính với bên ngoài
•System interconnection: cung cấp cơ chế truyền thông giữa ba thành phần trên
Trang 9Main memory
I/O CPU
Trang 10Một máy tính có thể có một hay nhiều
CPU
Dung lượng bộ nhớ là tùy chọn
Cơ cấu I/O có qui mô khác nhau tùy theo nhu cầu
Trang 12Conrol
Sequencing logic
Trang 13Sơ lược lịch sử phát triển
Thế hệ thứ nhất:
Trang 151943 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
Trang 16Sơ lược lịch sử phát triển(tt)
Thế hệ thứ hai:
Trang 18Sơ lược lịch sử phát triển (tt)
Trang 1919
Trang 21Sơ đồ kiến trúc của PIII
Trang 22Intel Core 2 Dual
Trang 23Nâng cao chất lượng
Tốc độ bộ vi xử lý
Cân đối hiệu suất
Cải thiện tổ chức và cấu trúc chip.
Trang 26Giải pháp cân đối hiệu suất
Bộ nhớ lớn hơn
Cache
Liên kết CPU-memory tốc độ cao
Thiết kế
Trang 27Cải thiện tổ chức và cấu trúc
chip
Tốc độ và clock rate
Kích thước và tốc độ cache
Kiến trúc song song
Các hệ quả
Trang 28Bài 2 STORED-PROGRAM VÀ GENERAL-PURPOSE COMPUTER
Trang 29Sự xuất hiện stored-program và
general-purpose hardware
hợp với nhau theo các cách khác nhau để lưu trữ dữ liệu nhị phân và thực hiện các phép toán số
học và luận lý trên dữ liệu đó.
nối các thành phần logic được thiết kế và thực hiện Có thể hiểu đó chính là dạng lập trình.
Trang 30Tuần tự các chức năng số học và luận lý
Phần cứng được xây dựng từ các thành phần logic
quả
Trang 31Sự xuất hiện stored-program và general-purpose hardware (tt)
Nếu tất cả các ứng dụng đều thực hiện
bằng hardwired progam => bất tiện và
khả năng của máy tính rất hạn chế
Xây dựng các chức năng số học và luận lý
tổng quát (general-purpose hardware)
Hoạt động dựa vào tín hiệu điều khiển
Trang 32Biên dịch
Các chức năng số học và luận lý
Các mã lệnh (instruction codes)
Tập tín hiệu điều khiển
Trang 33Phát sinh tín hiệu điều khiển
Toàn bộ chương trình là một tuần tự gồm nhiều bước.
Mỗi bước cần tiến hành một vài phép số học và luận lý trên data nào đó.
Mỗi bước cần một tập tín hiệu tương ứng
Một code duy nhất cho một tập tín hiệu có thể
Một segment tương ứng trong phần cứng tổng quát chấp nhận một tập tín hiệu điều khiển được phát ra.
Trang 34Phát sinh tín hiệu điều khiển(tt)
Lập trình bây giờ: thay vì nối dây phần cứng cho mỗi chương trình mới, chỉ cần cung cấp một tuần tự mới của các code
Mỗi code thực ra là một instruction, được phần biên dịch tiếp nhận và phát ra tập tín hiệu điều khiển tương ứng.
Tuần tự các instruction đó là software
Trang 35Data và instruction được lưu trữ trong một bộ nhớ đọc-ghi.
Nội dung trong bộ nhớ được định vị theo
vị trí, không cần biết kiểu data là gì.
Thực thi chương trình theo kiểu tuần tự, từ instruction này đến instruction kế tiếp.
Ba khái niệm cơ bản về stored-program
Trang 37Bộ nhớ chính
Thiết bị nhập đưa data và inst vào theo
tuần tự, nhưng chương trình không phải
thực thi theo tuần tự một cách cứng nhắc.
Hoạt động tính toán có thể phải truy xuất nhiều dữ kiện hơn tại một thời điểm theo một tuần tự không thể dự đoán được.
=>cần có nơi lưu trữ tạm thời cả data và inst, đó là bộ nhớ chính
Trang 38MAR
MBR I/O AR I/O BR
: Instruction Instruction Instruction
: Data Data
Bộ nhớ 0
1 2 :
Buffer I/O module
Trang 39Bài 3
KIẾN TRÚC VON NEUMANN
VÀ KIẾN TRÚC HARVARD
Trang 40KIẾN TRÚC VON NEUMANN
Computer) là máy tính điện tử dạng purpose đầu tiên
John von Neumann thiết kế ra máy tính mới gọi là IAS (Institute for Advanced Studies) là khuôn mẫu cho tất cả các máy tính general-purpose sau
Trang 4141
Trang 42Bộ nhớ
chính
ALU
Program Control Unit
Thiết bị I/O
Trang 43Máy von Neumann
Main memory: lưu trữ cả data và instruction
ALU: thao tác trên số liệu nhị phân
PCU: biên dịch và tạo điều kiện thực thi các inst
Thiết bị I/O được điều khiển bởi CU
Trang 44Máy von Neumann
Bộ nhớ chứa 1000 vị trí hay từ nhớ (word), mỗi word có 40 bit.
Mỗi số (data)được biểu diễn gồm 1bit dấu và 39 bit giá trị
Mỗi word có thể chứa hai inst 20 bit
Một inst gồm 8 bit op code và 12 bit địa
chỉ
Trang 46AC MQ
Các mạch số học-luận lý
MBR
Thiết bị I/O
Main memory
Trang 47Máy von Neumann (tt)
từ bộ nhớ và thực thi mỗi lúc một inst.
các thanh ghi:
Trang 48Giải mã inst trong IR
Trang 49Kiến trúc Hardvard
trình và dữ liệu Độ rộng Bus chương trình thay đổi linh động và tối ưu cho một thiết bị đặc biệt nào đó Độ rộng bus dữ liệu thường là 8 hay 16 bit Kiến trúc này cho phép truy xuất đồng thời cả chương trình và dữ liệu.
word inst chỉ chiếm một vị trí nhớ, các single word
quan đều chứa trong một từ nhớ Việc thực thi chỉ thị cũng nhanh vì bộ nhớ chương trình và bộ nhớ dữ liệu đều có thể truy xuất đồng hành.
Trang 50Kieán truùc Harvard
Trang 51Kiến trúc Harvard
Một số CPU có kiến trúc hỗn hợp giữa hai kiến trúc Cấu trúc bên trong core là Harvard Core của CPU được đệm từ bus ngòai qua một cache tốc độ cao và một bộ điều khiển cache Để nâng phẩm chất, bên trong CPU tách biệt bus chương trình và bus dữ liệu, mỗi bus đều có cache riêng.
Bộ điều khiển data cahe giám sát bus để cập nhật bản sao trong cache nếu các thiết bị khác trên bus thay đổi bộ nhớ chính Tuy nhiên, bộ nhớ chỉ thị không thể cập nhật, chỉ có thể đọc chương trình trong cache vàø không thể ghi vào Điều này khiến cho kiến trúc Harvard không thể thực hiện self modifying code.
Trang 52Bài 4
KIẾN TRÚC TẬP CHỈ THỊ
ISA (Instruction Set Architecture)
Nguyễn Hồng Sơn
Trang 53Tập chỉ thị
Tập hợp các chỉ thị khác nhau mà bộ xử lý
có thể thực thi
Trang 55Các thành phần
Trang 56Biể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
Trang 57Lư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
Trang 58Ví dụ rẽ nhánh
Trang 59Gọi thủ tục
Trang 60Số 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
Trang 63Tập chỉ thị được đo lường qua vài yếu tố
Trang 64Các cân nhắc thiết kế
nhưng lãng phí)
định số toán hạng (expanding opcode)
Trang 6514
Trang 66Hỗ trợ lưu trữ bên trong CPU
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ả.
(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.
General Purpose Register): dùng một số thanh ghi, truy xuất nhanh Có hai đặc trưng chính: số lượng
Trang 68Đị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
Trang 69Đị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
Trang 70Nội dung tham chiếu
Memory
3BF
Trang 71Đị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
trong ô nhớ 38F với nội dung trong AC
Trang 73Đị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
Trang 74opcode Địa chỉ thanh ghi
Nội dung tham chiếu Các thanh ghi
Trang 76opcode Đị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ớ
Trang 77Địa chỉ hiệu quả = địa chỉ + độ dời
Trang 78opcode thanh ghi địa chỉ
độ dời
Các thanh ghi
Nội dung tham chiếu
Bộ nhớ
Trang 79Relative 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
Trang 80Đị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)
Trang 81Indexed 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
thanh ghi R
Trang 82Địa chỉ ngăn xếp (stack
Trang 83Cá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
Trang 84Bà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
Trang 86CPU với system bus
Cấu trúc bên trong của CPU
Trang 87Tổ 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
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)
Trang 88Control & 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:
Trang 89Supervisor 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
Trang 90Mộ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 có nhiệm vụ thực thi từng chỉ thị được
Trang 91Chu 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): là 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 vào thanh ghi IR (instruction
register)
Trang 92Chu 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 nó phải là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 làm.
Các cơng việc thường rơi vào một trong bốn
nhóm:
CPU-Memory
CPU-I/O
Xử lý 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
đến nhiều cơng việc.
Một chu kỳ thực thi có thể có nhiều tham
chiếu đến bộ nhớ.
Một chu kỳ thực thi có thể có nhiều tham
chiếu đến I/O
Một chu kỳ thực thi có thể có nhiều tham
chiếu đến bộ nhớ và cả I/O
Trang 93Các trạng thái trong một chu kỳ chỉ thị
(1)Tính toán địa chỉ của chỉ thị: xác định địa chỉ của chỉ thị kế tiếp,
thường là cộng một hằng số vào địa chỉ của chỉ thị trước
(2)Lấy lệnh
(3)Giải mã chỉ thị: phân tích để xác định cơng việc phải làm và toán
hạng được dùng
(4)Tính toán địa chỉ toá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 toán hạng
(6)Xử lý trên dữ liệu theo cơng việc được chỉ định
(7)Lưu toán hạng (data)
chỉ thị kế
nhiều kết quả
nhiều tốn hạng
Trang 94Các trạng thái…
Trên một số máy tính, một chỉ thị cụ thể chỉ
định một toán tử thực hiện trên một vector
(mảng một chiều) hay chuỗi của các ký tự
Điều nà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ã và 12 bit địa chỉ
Data: 1 bit dấu và 15 bit định lượng
Gồm có các thanh ghi:
PC
IR
AC(accumulator): thanh ghi tạm
4 trong số 16 mã lệnh cụ thể
0001: nạp nội dung từ bộ nhớ vào AC
0010: ghi nội dung AC vào bộ nhớ
0101: cộng nội dung từ bộ nhớ với nội dung của AC
Trang 95Ví dụ…
Chỉ thị được cất giữ từ vị trí 0x300 trong bộ nhớ.
Trình bà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 vào AC
Cộng nội dung của 0x941 với AC
Ghi nội dung của AC vào 0x941
Như vậy có 3 chu kỳ nạp và 3 chu kỳ thực thi
194059412941
00030002
00031940
300 PC
AC IR
300 301 302
940 941
Bộ nhớ Các thanh ghi
Trang 9600030002
00055941
301 PC
AC IR
300 301 302
940 941
194059412941
00030005
00052941
302 PC
AC IR
300 301 302
940 941
Trang 97Ví 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
0005
2942
194059416942
00030002
1940
300
300 301 302 303
940 941 942
PC AC IR
0005 2942
0003
Trang 98Bài tập về nhà
Trình bày tất cả cá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.
Viết tuần tự chỉ thị thực hiện phép tính sau trên máy IAS
(máy tính Von Neumann)
(4+2)*5, ghi kết quả tại vị trí 202h
Hãy trình bày tất cả các chu kỳ chỉ thị khi thực hiện phép
tính trên.
Cho mã chương trình đươïc nạp vào bộ nhớ bắt đầu tại vị
trí 100h và dữ liệu được cất giữ bắt đầu từ vị trí 200h.
Trang 99THỰC THI CHƯƠNG TRÌNH
CĨ NGẮT
BÀI 6
Trang 100Khái niệm Ngắt (Interrupt)
trình xử lý bình thường của CPU.
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…
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
Trang 102Chương trình I/O tiêu biểu
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…
Trang 104Hoạ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
Trang 1065 2
4 Hoạt động của chương trình
có ngắt…
Trang 107Thủ 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