Mở đầu Máy tính được cấu thành từ các mạch điện tử tích hợp (integrated circuits – IC) rất phức tạp liên kết với nhau qua hệ thống kênh truyền dẫn được gọi là hệ thống BUS. Các khối chức năng cơ bản được xây dựng với công nghệ tích hợp mật độ lớn gồm đơn vị xử lý trung tâm (CPU – Central Proccessing Unit), khối tạo xung nhịp (Clock), bộ nhớ (Memorry) và các chip tạo các cổng (Port Chips) ghép nối thiết bị ngoại vi như minh hoạ trên Hình II.1 CPU được xây dựng từ các mạch điện tử phức tạp, có khả năng thực thi tất cả các lệnh trong tập lệnh được mô phỏng trước. Bộ nhớ được xây dựng từ các chip nhớ, có khả năng lưu giữ các lệnh của chương trình và dữ liệu. Các chip tạo cổng điều khiển việc truy xuất đến các thiết bị ngoại vi như bàn phím (Keyboard), chuột (Mouse), màn hình (Monitor), máy in (Printer), các ổ đĩa (Disk Drivers).
CPU chỉ truy xuất dữ liệu đến từ (input) và đi ra (output) thiết bị ngoại vi thông qua các chip tạo cổng. Cấu trúc chức năng của máy tính được mô phỏng trên Hình II.1, Hệ điều hành và Ngôn ngữ lập trình bậc cao điều khiển hoạt động của các mạch điện tử trong máy tính. Khi cấp nguồn, chương trình khởi tạo hệ thống sẽ nạp hệ điều hành (boot hệ thống), ngôn ngữ lập trình sẽ được tải vào bộ nhớ nhờ hệ điều hành. 11 Khoa CNTT - Trường Đại học Thái Bình Giáo trình KTMT & QLHTMT Ở mức trên cùng, máy tính có thể thực thi các chương trình ứng dụng.
Các chương trình ứng dụng được sử dụng nhiều như tạo các bảng tính, tạo văn bản, các bản vẽ, …, được viết bằng các ngôn ngữ lập trình khác nhau như C, C++, hoặc là liên kết giữa các ngôn ngữ. Người ta sử dụng ngôn ngữ lập trình trong mối liên kết với hệ điều hành để điều khiển hoạt động chức năng của phần cứng. Ngôn ngữ máy là ngôn ngữ duy nhất bao gồm các chỉ lệnh (Instruction) mà phần cứng có thể hiểu và thực thi, được tạo ra từ các tổ hợp các số biểu diễn theo hệ nhị phân. Các mã nhị phân này được gọi là mã lệnh, chúng tạo nên tập lệnh của CPU, giá trị “0” hoặc “1” làm nhiệm vụ “ngắt” hoặc “đóng” dòng điện để điều khiển hoạt động của các phần tử logic trong mạch điện.
Cần hiểu rằng, tất cả các CPU đều làm việc với mã máy. Một khi sử dụng ngôn ngữ lập trình bậc cao, sử dụng các phát biểu (Statements), các chương trình dịch (Compiler) sẽ chuyển đổi (dịch) chúng ra mã máy để CPU hiểu và thực hiện. Mặc dù vậy, vẫn có thể nói máy tính bao giờ cũng được cấu thành từ các khối chức năng chính sau: 1. Bộ nhớ trung tâm (Central Memory hoặc Main Memory).
Bộ nhớ trung tâm là nơi lưu giữ chương trình và dữ liệu trước khi chương trình được thực hiện. Đơn vị điều khiển (CU - Control Unit), điều khiển mọi hoạt động của tất cả các thành phần trong hệ thống máy tính theo chương trình mà máy tính cần thực hiện. Đơn vị số học và Logic (ALU – Arithmetic & Logic Unit), thực hiện các thao tác xử lý dữ liệu thông qua các phép toán số học và Logic theo sự điều khiển của Đơn vị điều khiển. Đơn vị điều khiển CU và đơn vị số học-logic ALU được tích hợp trong một chip IC và được gọi là Đơn vị xử lý Trung tâm (CPU-Central Proccessing Unit).
Thiết bị vào (Input Device) thực hiện nhiệm vụ thu nhận các thông tin, dữ liệu từ thế giớ bên ngoài, biến đổi thành dạng tương thích với phương thức biểu diễn trong máy tính, đưa vào CPU xử lý hoặc ghi vào bộ nhớ. Thiết bị ra (Output Device) thực hiện nhiệm vụ đưa thông tin, dữ liệu từ CPU hoặc bộ nhớ ra ngoài dưới các dạng thức được người sử dụng yêu cầu. Thiết bị vào và thiết bị ra được gọi chung là nhóm thiết bị ngoại vi (Peripherals). 12 Khoa CNTT - Trường Đại học Thái Bình Giáo trình KTMT & QLHTMT Sau đây ta sẽ tìm hiểu nguyên lý kiến trúc và hoạt động của một máy tính thông qua một máy tính đơn giản nhất.
Máy tính, ở dạng đơn giản nhất, được cấu thành từ bốn khối chức năng cơ bản sau: Khối điều khiển và xử lý dữ liệu: Khối chức năng này được tích hợp trong cùng một vi mạch gọi là Đơn vị xử lý trung tâm (CPU – Central Proccessing Unit). Khối lưu trữ dữ liệu được gọi là bộ nhớ (Memory). Khối chức năng cung cấp dữ liệu cho máy tính xử lý, hoặc phản ánh dữ liệu đã được xử lý do máy tính cung cấp, được gọi là khối các thiết bị nhập xuất (I/O devices). Các kênh truyền dẫn cung cấp sự liên lạc và trao đổi dữ liệu giữa các khối trên, được gọi là kênh liên kết hệ thống (BUS).
Trong một máy tính, mỗi khối thực hiện các chức năng nói trên có thể tồn tại nhiều đơn vị, dưới các dạng khác nhau, trong đó CPU là quan trọng nhất. Đơn vị xử lý trung tâm (CPU) có thể xử lý được các lệnh với khuôn dạng từ lệnh, giả sử với độ dài 8 bit, như sau: B7 B6 B5 B4 B3 B2 B1 B0 Phần chứa mã lệnh Phần chứa địa chỉ toán hạng Lệnh được tạo từ hai phần: Mã lệnh và địa chỉ toán hạng Mã lệnh là một giá trị nhị phân 4 bit, mỗi tổ hợp là một lệnh có chức năng khác nhau, phần chứa địa chỉ toán hạng cũng là một giá trị nhị phân 4 bit, xác định vị trí của ô nhớ trong bộ nhớ. Phần địa chỉ xác định toán hạng mà lệnh trực tiếp xử lý. Đơn vị xử lý trung tâm gồm hai thành phần chức năng: Đơn vị số học- logic ALU (Arithmetic-Logic Unit) và đơn vị điều khiển CU (Control Unit) (Hình II.
Đơn vị điều khiển CU có chức năng lấy lệnh theo tuần tự được lưu giữ từ trong bộ nhớ, giải mã lệnh và tạo các tín hiệu điều khiển hoạt động của các khối chức năng bên trong và bên ngoài CPU. Lệnh đọc từ ô nhớ được đưa vào thanh ghi lệnh IR, được giải mã tại khối giải mã lệnh ID để xác định công việc CPU cần thực hiện. 13 Khoa CNTT - Trường Đại học Thái Bình Giáo trình KTMT & QLHTMT WR Hình II. Sơ đồ cấu trúc máy tính đơn giản Đơn vị điều khiển CU gồm thanh ghi lệnh IR (Instruction Register), là nơi chứa lệnh mà CPU đọc về từ ô nhớ lệnh, bao gồm cả phần mã lệnh và phần địa chỉ toán hạng, khối giải mã lệnh ID (Instruction Decoder), mạch giải mã này giải mã lệnh để xác định nhiệm vụ mà lệnh yêu cấu CPU xử lý, tạo các tín hiệu điều khiển các tác vụ của CPU khi thực thi lệnh và thanh đếm chương trình PC (Program Counter).
Thanh đếm chương trình PC làm nhiệm vụ con trỏ lệnh (Instruction Pointer), chứa địa chỉ của ô nhớ chứa lệnh sẽ thực thi trong tuần tự thực hiện chương trình. Do vậy sau khi CPU đọc được một lệnh từ bộ nhớ chương trình, sau khi được giải mã, thông qua điều khiển của CU thì PC được tăng nội dung lên để chỉ vào ô nhớ chứa lệnh tiếp theo. Trong trường hợp gặp lệnh rẽ nhánh hay lệnh gọi chương trình con, nội dung thanh đếm PC thay đổi tuỳ theo giá trị địa chỉ mà chương trình dịch gán cho nhãn hay tên chương trình con được xác định bởi người lập trình. CPU có các thanh ghi: thanh ghi gộp (Acc – Accummulator), thanh ghi tạm thời TEMP (temporary), thanh ghi đệm địa chỉ MAR (Memory Address Register), thanh ghi đệm bộ nhớ MBR (Memory Buffer Register), và thanh ghi cờ Flags.
Thanh ghi Acc được sử dụng để chứa nội dung một toán hạng, và thông thường là nơi chứa kết quả thực hiện phép toán, thanh ghi tạm thời chứa nội dung toán hạng thứ hai trong các phép toán hai ngôi. Nội dung thanh ghi MAR là địa chỉ của ô nhớ mà CPU 14 Khoa CNTT - Trường Đại học Thái Bình Giáo trình KTMT & QLHTMT đang truy xuất, còn nội dung thanh ghi MBR là dữ liệu đọc được từ bộ nhớ hoặc sẽ được ghi vào ô nhớ. Thanh ghi cờ Flags gồm các bit biểu diễn trạng thái của kết quả thực hiện phép toán xử lý dữ liệu của CPU, Trong trường hợp đơn giản, thanh ghi cờ có 3 bit, đó là bit dấu (S – Sign) biểu diễn giá trị dữ liệu là âm hay dương, bit không (Z-Zero) biểu diễn kết quả phép toán khác 0 hay bằng 0, bit nhớ (C – Carry) biểu diễn trạng thái kết quả phép toán có bit nhớ hay không có bit nhớ. Giá trị các bit cờ trạng thái được định nghĩa như sau: Kết quả là một số âm: (S) = 1 ; dấu ngoặc thể hiện nội dung của bit Kết quả bằng 0: (Z) = 1 Kết quả có nhớ: (C) = 1 Hoạt động thực thi một lệnh trong chương trình của máy tính có thể tóm tắt như sau: Chương trình và số liệu ban đầu được lưu giữ ở bộ nhớ trung tâm, đó là bộ nhớ ROM (Read Only Memory), RAM (Random Access Memory).
Bắt đầu chương trình, lệnh đầu tiên của chương trình trong vùng nhớ chương trình được đưa vào thanh ghi lệnh IR của đơn vị điều khiển (CU). Tác vụ được gọi là tác vụ nhận lệnh (Instruction Fetch). CU tiến hành giải mã lệnh, xác định nội dung phép toán cần xử lý là phép tính nào, trên các dữ liệu nào. Đây là tác vụ giải mã lệnh (ID – Instruction Decoder).
Nếu lệnh đòi hỏi làm việc với các toán hạng (được xác định trong lệnh), CU xác định địa chỉ tương ứng của toán hạng trong vùng nhớ dữ liệu hoặc được nhập vào từ thiết bị ngoại vi. Tác vụ này được gọi là tạo địa chỉ toán hạng (GOA - Generate Operand Address). Sau khi địa chỉ toán hạng được tạo, CU phát các tín hiệu điều khiển tới các thành phần liên quan để nhận toán hạng, đặt vào các thanh ghi xác định trong CPU. Tác vụ được gọi là nhận toán hạng (Operand Fetch) 5.
CU phát các tín hiệu điều khiển tới Đơn vị Số học-Logic (ALU). ALU thực hiện phép toán được yêu cầu trong mã lệnh. Tác vụ này gọi là thực hiện (Execute). Kết quả xử lý được đặt trong thanh ghi gộp (Acc) hoặc được lưu vào bộ nhớ trong tuỳ thuộc sự xác định nơi lưu giữ thể hiện đích (destination) trong lệnh.
Tác vụ được gọi là Ghi lại kết quả (Write Back).