Bộ xử lý trung tâm CPU Phát tín hiệu điều khiển thực thi lệnh Trong quá trình hoạt động, CPU có thể trao đổi dữ liệu với bộ nhớ chính hoặc hệ thống vào/ra... Liên kết hệ thống Sử dụn
Trang 1Kiến trúc phần mềm bộ xử lý
Trang 3Các thành phần cơ bản của máy tính
Bus hệ thống
Module vào/ra
Trang 5Bộ xử lý trung tâm (CPU)
Phát tín hiệu điều khiển thực thi lệnh
Trong quá trình hoạt động, CPU có thể trao đổi dữ liệu với bộ nhớ chính hoặc hệ thống vào/ra
Trang 7Bộ nhớ máy tính
Chức năng:
Lưu trữ chương trình và dữ liệu
Các thao tác cơ bản với bộ nhớ:
Trang 8Bộ nhớ trong
Bao gồm những thành phần nhớ mà CPU có thể trao đổi thông tin trực tiếp
Được thiết kế bằng bộ nhớ bán dẫn (ROM, RAM)
Dung lượng nhỏ hơn bộ nhớ ngoài
Trang 10Bộ nhớ đệm nhanh
Được đặt đệm giữa CPU và bộ nhớ chính nhằm tăng tốc độ truy cập bộ nhớ của CPU
Hiện nay, cache được chia thành một số mức:
level 1 (L1), level 2 (L2), level 3 (L3), … và được tích hợp trên chip vi xử lý
Cache thuộc loại bộ nhớ RAM
Trang 12Hệ thống vào/ra (I/O system)
Các module nối ghép vào/ra:
Để kết nối thiết bị ngoại vi (peripheral devices) với máy tính
Trong các module vào/ra có các cổng vào/ra (I/O ports), các cổng này được đánh địa chỉ, thiết bị ngoại vi được kết nối và trao đổi dữ liệu thông qua cổng.
Trang 13Liên kết hệ thống
Sử dụng các bus
Bus là tập hợp các đường kết nối dùng để vận chuyển thông tin từ thành phần này đến thành phần khác trong máy tính
Độ rộng bus: là số đường kết nối có khả năng vận chuyển các bits theo xung đồng hồ
Phân loại bus:
Bus địa chỉ
Bus dữ liệu
Bus điều khiển
Trang 14Sơ đồ liên kết hệ thống
CPU
Các module nhớ của bộ nhớ
chính
Các module vào/ra
Các thiết bị ngoại vi
Bus địa chỉ Bus dữ liệu Bus điều khiển
Trang 15Bus địa chỉ
Vận chuyển địa chỉ từ CPU đến module vào/ra nhằm xác định ngăn nhớ, cổng vào/ra cần trao đổi thông tin
Độ rộng của bus địa chỉ:
Có khả năng vận chuyển tối đa n bit địa chỉ cùng 1 lúc
Bus địa chỉ của một số bộ xử lý Intel:
8088/8086: 20bit => không gian địa chỉ: 2 20 = 1MB
80386/80486/Pentium: 32 bit => 2 32 = 4GB
Pentium 2 & Pentium 4: 36 bit => 2 36 = 64GB
Trang 16Bus dữ liệu
Vận chuyển dữ liệu từ bộ nhớ chính => CPU
Vận chuyển dữ liệu giữa các thành phần
Trang 17Bus điều khiển
Vận chuyển các tín hiệu điều khiển
2 loại tín hiệu điều khiển:
Tín hiệu điều khiển từ CPU => các thành phần khác
Tín hiệu yêu cầu từ các thành phần khác gửi về CPU
Trang 18Một số tín hiệu điều khiển điển hình
MEMR: đọc nội dung ngăn nhớ
MEMW: ghi dữ liệu vào ngăn nhớ
IOR: đọc dữ liệu từ cổng vào
IOW: ghi dữ liệu ra cổng
NMI (Non-Maskable Interrupt): ngắt không che được đưa đến ngắt CPU (bắt buộc CPU phải ngắt khi có tín hiệu này)
INTR (Interrupt Request): tín hiệu yêu cầu ngắt đưa đến xin ngắt CPU (không bắt buộc)
INTA (Interrupt Acknowledge): tín hiệu phát ra từ CPU báo chấp nhận ngắt
Reset: khởi động lại CPU
BRQ (Bus Request): tín hiệu yêu cầu CPU chuyển nhượng quyền sử dụng bus
BGT (Bus Grant): tín hiệu phát ra báo chấp nhận chuyển nhượng bus.
Trang 19Phân cấp bus trong máy tính
4 lớp bus:
Bus của bộ xử lý
Bus của bộ nhớ chính (RAM)
Bus vào/ra tốc độ cao (USB)
Bus vào/ra tốc độ chậm
Trang 21Mạch số
Trang 22Hoạt động cơ bản của máy tính
Trang 23 Ngắt do lỗi phần cứng (lỗi RAM, lỗi nguồn, …)
Ngắt do tín hiệu yêu cầu ngắt từ bộ điều khiển vào/ra gửi về CPU yêu cầu CPU chuyển sang thực hiện
chương trình con trao đổi dữ liệu với thiết bị ngoại vi
Trang 24Sơ đồ mô tả
Chương trình đang thực hiện
Chương trình con phục vụ ngắt
Ngắt ở đây
Trang 25Hoạt động với nhiều ngắt
Trang 26Các chương trình con phục vụ ngắt
Các chương trình con đã có sẵn trong bộ nhớ
chính của máy tính:
Các chương trình con nằm trong ROM BIOS
Các chương trình con của hệ điều hành được nạp từ
bộ nhớ ngoài vào RAM trong khi khởi động
Trang 28 Địa chỉ toán hạng nguồn
Địa chỉ toán hạng kết quả
Lệnh kế tiếp (thông tin này thường là ẩn)
Kiểu định vị:
Cách thức thâm nhập toán hạng
Trang 29Các kiểu thi hành lệnh
Một lệnh là mã máy bao gồm mã tác vụ và các toán hạng
Tùy theo tần số sử dụng các phép toán mà các nhà thiết
kế máy tính quyết định số lượng các mạch chức năng cần thiết cho việc tính toán (thường là ≤ 3)
Trang 30Các kiểu thi hành lệnh
VD: lệnh X = A + B + C + D
Có thể thực hiện = 1 lệnh mã máy nếu có 3 mạch cộng
Hoặc thực hiện = 3 lệnh mã máy nếu có 1 mạch cộng
Vấn đề cần xem xét:
Vị trí của toán hạng
Chia thành các kiến trúc:
Ngăn xếp
Thanh ghi tích lũy
Thanh ghi đa dụng
Trang 32 Để tính phép tính C = A + B
Khuynh hướng sử dụng thanh ghi đa dụng
Trang 33Kiến trúc thanh ghi đa dụng
Một lệnh ALU phải có từ 2 đến 3 toán hạng
Nếu 2 toán hạng thì 1 trong 2 toán hạng vừa là toán hạng nguồn vừa là toán hạng đích (add A, B)
Nếu 3 toán hạng thì 1 trong 3 toán hạng phải chứa kết quả phép tính giữa 2 toán hạng còn lại (add A, B, C)
Số lượng toán hạng bộ nhớ có trong lệnh thay đổi
Trang 34Tập lệnh
Các lệnh ngôn ngữ cấp cao được xây dựng bằng một lệnh mã máy hoặc 1 chuỗi nhiều lệnh mã máy
Các lệnh hợp ngữ, từ gợi nhớ mã lệnh
int 33h
Trang 39Tập lệnh - Vòng lặp
Các vòng lặp có thể được thực hiện bằng các lệnh nhảy (jump)
Việc quản lý số lần lặp thông qua bộ đếm số lần lặp
Trang 40 STORE Ri, (R30) ; ghi Ri vào đỉnh ngăn xếp
LOAD Ri, (R30) ; lấy nội dung ở đỉnh ngăn xếp đưa vào Ri
SUBI R30, R30, 4 ; giảm con trỏ ngăn xếp đi 4
Trang 41Tập lệnh – Các thủ tục
Các thủ tục được gọi bởi lệnh CALL
Bên trong thủ tục, trước khi kết thúc thủ tục cần
có lệnh RETURN
Việc truyền tham số giữa thủ tục gọi và thủ tục bị gọi có thể sử dụng thanh ghi hoặc ngăn xếp
Trang 44Kiểu và chiều dài toán hạng
Kiểu của toán hạng thường được đưa vào trong
mã lệnh
4 kiểu thường được dùng:
Kiểu địa chỉ
Kiểu số: số nguyên, số dấu chấm động, …
Kiểu chuỗi ký tự: ASCII, EBIDEC, …
Kiểu logic: các bit, các cờ (flag)
Thông thường loại của toán hạng xác định luôn chiều dài của nó (8 bit, 16 bit, 32 bit, 64 bit)
Trang 45Kiến trúc CISC
CISC (Complex Instruction Set Computer) ra đời
từ những năm 1960
Các chương trình khó dùng thanh ghi
Ưu tiên chọn kiểu: bộ nhớ - bộ nhớ, bộ nhớ - thanh ghi
Lệnh phức tạp, dùng nhiều kiểu định vị
Trang 46Kiến trúc RISC
Đầu thập niên 1980, chương trình dịch đã biết sử dụng các thanh ghi và không có sự khác biệt khi sử dụng ô nhớ cho các vi chương trình hay chương trình.
Dẫn đến đưa ra RISC (Reduced Instruction Set Computer)
Cho phép thực hiện kỹ thuật pipeline
Lệnh có chiều dài cố định, dạng đơn giản, dễ giải mã
Kiểu thanh ghi – thanh ghi
Chỉ có các lệnh ghi/đọc bộ nhớ mới cho phép thâm nhập bộ nhớ
Trang 48Đặc điểm của RISC
Có một số ít lệnh (thông thường dưới 100 lệnh )
Có một số ít các kiểu định vị (thông thường hai kiểu: định vị tức thì và định vị gián tiếp thông qua một thanh ghi)
Có một số ít dạng lệnh (một hoặc hai)
Các lệnh đều có cùng chiều dài
Chỉ có các lệnh ghi hoặc đọc ô nhớ mới thâm nhập vào bộ nhớ
Dùng bộ tạo tín hiệu điều khiển bằng mạch điện để tránh chu
kỳ giải mã các vi lệnh làm cho thời gian thực hiện lệnh kéo dài
Bộ xử lý RISC có nhiều thanh ghi để giảm bớt việc thâm nhập vào bộ nhớ trong
Ngoài ra các bộ xử lý RISC đầu tiên thực hiện tất cả các lệnh trong một chu kỳ máy
Trang 49Ưu điểm của RISC
Diện tích của bộ xử lý dùng cho bộ điều khiển giảm từ 60% (cho các bộ xử lý CISC) xuống còn 10% (cho các bộ xử lý RISC) => có thể tích hợp thêm vào bên trong bộ xử lý các thanh ghi, các cổng vào ra và bộ nhớ cache
Tốc độ tính toán cao nhờ vào việc giải mã lệnh đơn giản, nhờ có nhiều thanh ghi (ít thâm nhập bộ nhớ), và nhờ thực hiện kỹ thuật ống dẫn liên tục và có hiệu quả (các lệnh đều
có thời gian thực hiện giống nhau và có cùng dạng)
Thời gian cần thiết để thiết kế bộ điều khiển là ít Điều này góp phần làm giảm chi phí thiết kế
Bộ điều khiển trở nên đơn giản và gọn làm cho ít rủi ro mắc phải sai sót mà ta gặp thường trong bộ điều khiển
Trang 50Hạn chế của RISC
Các chương trình dài ra so với chương trình viết cho
bộ xử lý CISC Điều này do các nguyên nhân sau :
Cấm thâm nhập bộ nhớ đối với tất cả các lệnh ngoại trừ các lệnh đọc và ghi vào bộ nhớ Do đó ta buộc phải dùng nhiều lệnh để làm một công việc nhất định
Cần thiết phải tính các địa chỉ hiệu dụng vì không có nhiều cách định vị
Tập lệnh có ít lệnh nên các lệnh không có sẵn phải được thay thế bằng một chuỗi lệnh của bộ xử lý RISC
Các chương trình dịch gặp nhiều khó khăn vì có ít lệnh làm cho có ít lựa chọn để diễn dịch các cấu trúc của chương trình gốc Sự cứng nhắc của kỹ thuật ống dẫn cũng gây khó khăn
Trang 51Hạn chế của RISC
Có ít lệnh trợ giúp cho ngôn ngữ cấp cao
Các bộ xử lý CISC trợ giúp mạnh hơn các ngôn ngữ cao cấp nhờ có tập lệnh phức tạp Hãng Honeywell đã chế tạo một máy có một lệnh cho mỗi động từ của ngôn ngữ COBOL Các tiến bộ gần đây cho phép xếp đặt trong một vi mạch, một
bộ xử lý RISC nền và nhiều toán tử chuyên dùng
Thí dụ, bộ xử lý 860 của Intel bao gồm một bộ xử
lý RISC, bộ làm tính với các số lẻ và một bộ tạo tín hiệu đồ hoạ
Trang 52Kiểu định vị trong RISC
Kiểu định vị thanh ghi
Kiểu định vị tức thì
Kiểu định vị trực tiếp
Kiểu định vị gián tiếp bằng thanh ghi + độ dời
Kiểu định vị tự tăng
Trang 54Ngôn ngữ cấp cao và ngôn ngữ máy
FORTRAN dùng trong tính toán khoa học
COBOL dùng trong quản lý
LISP & PROLOG dùng trong trí tuệ nhân tạo
PASCAL, C, ADA, …
Đặc điểm: cô đọng và độc lập với mọi bộ vi xử lý
Cần có chương trình dịch để chuyển từ mã nguồn sang mã máy của máy tính đang sử dụng