3.1. Bộ xử lí (CPU - Central Processing Unit ) CPU có chức năng điều khiển máy tính và xử lý thông tin theo chương trình đã được lưu trữ trong bộ nhớ. CPU gồm các thành phần: Đồng hồ (clock) tạo các xung điện áp chính xác, đều đặn để sinh ra các tín hiệu cơ bản để điều chế thông tin và đồng bộ hoá các thành phần khác của máy tính. Các thanh ghi (registers). Ngoài bộ nhớ trong, CPU còn dùng các thanh ghi như là những bộ nhớ nhanh, chuyên dụng dùng trong khi thực hiện các lệnh. Các thanh ghi thường được dùng để ghi các lệnh đang được thực hiện, lưu trữ các dữ liệu phuc phục vụ cho các lệnh, các kết quả trung gian, các địa chỉ, các thông tin dùng đến trong quá trình thực hiện một lệnh. Khối số học và logic (ALU: arithmetic and logic unit) là khối chức năng thực hiện các phép toán cơ sở của máy như các phép toán số học, các phép toán logic, phép tạo mã v.v. ALU bao gồm những mạch chức năng để thực hiện các phép toán đó. Khối điều khiển (CU: control unit) là khối chức năng điều khiển sự hoạt động của MTĐT theo chương trình định sẵn. Nhờ công nghệ vi mạch, người ta có khả năng chế tạo toàn bộ bộ xử lý trong một chíp (một mạch vi điện tử được đóng trong một vỏ duy nhất). Những bộ xử lý như vậy gọi là bộ vi xử lý (micro processor ) viết tắt là µP. Hình 3.1. Một CPU của máy tính lớn IBM và bên dưới là CPU của Intel dùng cho các máy vi tính 3.2. Quá trình thực hiện lệnh Để hiểu rõ quá trình này ta cần tìm hiểu thêm về lệnh máy. Mỗi lệnh máy là một yêu cầu ALU thực hiện một phép tính cơ sở (cộng, nhân, nhân logic, cộng logic, chọn lệnh cần thực hiện v. v). Các lệnh này phải chỉ ra đầy đủ các thông tin sau: Phép tính cần thực hiện. Trong lệnh máy nó cho bằng một số bit gọi là mã phép tính. Nơi đặt dữ liệu của lệnh. Thông tin này có thể là điạ chỉ trong BNT hoặc là mã thanh ghi. Các thông tin liên quan đến kết quả thực hiện chẳng hạn địa chỉ của nơi để kết quả của phép toán. Như vậy một lệnh có cấu trúc như sau: Mã lệnh Các thành phần địa chỉ Một chương trình máy là một dãy các lệnh. Do chương trình cũng nằm trong bộ nhớ nên chính các lệnh cũng có địa chỉ, đó chính là địa chỉ byte đầu tiên của lệnh. Quá trình thực hiện một chương trình là một quá trình thực hiện liên tiếp từng lệnh. Để quản lý thứ tự thực hiện các lệnh, CU sử dụng một thanh ghi gọi là thanh đếm địa chỉ (Program Counter - PC) ghi địa chỉ của lệnh sẽ thực hiện tiếp theo. Giá trị khởi tạo của PC là địa chỉ lệnh đầu tiên chương trình. MTĐT được điều khiển bởi các lệnh của chương trình. Chu kỳ thực hiện một lệnh bao gồm các bước sau: Hình 3.2. Một bảng mạch chủ của máy vi tính. trong đó có CPU, bộ nhớ và các mạch giao tiếp với ngoại vi. Trong hình trên ta thấy một quạt điện nhỏ để làm nguội CPU, phía dưới quạt chính là CPU Đọc lệnh. Trong chu kì đọc lệnh, CU gửi nội dung PC vào bộ giải mã địa chỉ để đọc byte đầu tiên của lệnh lên một thanh ghi khác là thanh ghi lệnh. PC sẽ tăng lên một đơn vị để CU đọc byte tiếp theo. Độ dài các lệnh có thể khác nhau nhưng byte đầu tiên thường là nơi chứa mã lệnh. Giải mã lệnh. CU căn cứ vào mã lệnh để đọc nốt các thông tin địa chỉ của lệnh và hoàn thành việc đọc lệnh, PC tiếp tục tăng theo số lượng byte đã đọc vào. Đọc dữ liệu. Các địa chỉ dữ liệu được gửi vào bộ giải mã địa chỉ để đọc nội dung các đối tượng của lệnh gọi là các tóan hạng (operand) vào các thanh ghi dũ liệu. Thực hiện lệnh. Phát tín hiệu điều khiển cho mạch chức năng của ALU thực hiện phép toán mà mã lệnh xác định. Sau đó quay lại chu kì đọc lệnh với nội dung mới của PC. Chú ý rằng nếu lệnh thực hiện là lệnh điều khiển thì giai đoạn thực hiện này sẽ đặt địa chỉ lệnh sẽ thực hiện tiếp theo vào PC. Như vậy để thực hiện một lệnh nói chung phải đọc/ghi bộ nhớ nhiều lần. Có hai phương pháp tổ chức điều khiển: Phương pháp điều khiển cứng. Ứng với mỗi lệnh máy có một mạch địên thực hiện lệnh đã cho theo các tín hiệu điều khiển. Phương pháp điều khiển vi chương trình. Mỗi lệnh được thực hiện thông qua các lệnh sơ cấp hơn gọi là các vi lệnh. Khi đó người ta chỉ phải thiết kế phần cứng ở mức vi lệnh. Ví dụ, phép đọc một byte trong bộ nhớ có thể lấy làm một vi lệnh. Như vậy, một phép tính có thể thực hiện bằng cách thi hành một dãy vi lệnh gọi là vi chương trình. Do đó, khi thay đổi lệnh chỉ cần thay đổi vi chương trình tương ứng mà không cần thay đổi cấu trúc vật lí của MTĐT. Các CPU ngày nay không thực hiện lệnh theo kiểu tuần tự như trên mà thường thực hiện song song nhiều quá trình. Thông tin nạp từ bộ nhớ có thể là cả một khối lên một khối thanh ghi. Một số CPU có cả cơ chế xử lý thông minh để dự đoán các khối chương trình hay dữ liệu sắp dùng đến để tải trước lên thanh ghi. Trong khi đang thực hiện lệnh thứ nhất thì một thành phần khác giải mã lệnh thứ hai và một thành phần khác tải lệnh thứ 3 lên thanh ghi. Cách thức xử lý này gọi là pipeline. Nhờ phương thức này mà nhiều bộ xử lý có thể thực hiện nhiều lệnh đồng thời. 3.3. Nguyên lý Von Neumann Kiến trúc máy tính nêu trên được J. Von Neumann mô tả nên cũng gọi là kiến trúc Von Neumann. Đi kèm với kiến trúc này là nguyên lý hoạt động cũng tên là Von Neumann. Nội dung nguyên lí gồm hai điểm sau: Nguyên lý điều khiển bằng chương trình. Máy tính hoạt động theo chương trình lưu trữ sẵn trong bộ nhớ của nó. Nguyên lý này đảm bảo cho máy tính có khả năng tự điều khiển không cần có sự can thiệp của người trong quá trình xử lý vì quá trình xử lý đã được xác định qua một kịch bản. Nguyên lý truy cập theo địa chỉ. Như đã biết, dữ liệu theo nghĩa rộng (dữ liệu ban đầu, kết quả trung gian, kết quả cuối cùng, chương trình...) được đưa vào bộ nhớ trong những vùng nhớ được chỉ định bằng địa chỉ. Trong chương trình, dữ liệu được chỉ định thông qua địa chỉ. Như vậy, việc truy cập tới dữ liệu là gián tiếp thông qua địa chỉ của nó trong bộ nhớ. Nguyên lý này đảm bảo tính mềm dẻo trong xử lý thông tin. Người lập trình có thể viết yêu cầu một cách tổng quát theo vị trí các đối tượng đó nằm ở đâu mà không cần biết giá trị cụ thể của chú