Alu trong tin hoc la gi

Hiện nay tính trạng nhiều sinh viên theo học ngành Khoa học máy tính ra trường mà không hiểu rõ nguyên lí hoạt động cơ bản của máy tính dẫn đến việc không thể làm tốt các công việc của ngành này

Việc hiểu rõ các nguyên lí hoạt động của máy tính là rất quan trọng, cũng giống như việc một bác sĩ phẫu thuật để có thể làm tốt công việc của mình cần hiểu rõ tường tận về các bộ phận trong cơ thể nếu không có thể để lại các hậu quả nghiêm trọng. Đối với công việc như lập trình giúp tạo ra những phần mềm máy tính có chất lượng cao.

Những chiếc máy vi tính ngày nay thì phức tạp hơn bao giờ hết, chúng là sự kết tinh trí tuệ của nhân loại để cho ra đời những chiếc máy nhỏ gọn, tốc độ xử lí mạnh mẽ. Bởi vì máy tính ngày càng phức tạp, những người làm việc trong lĩnh vực khoa học máy tính không thể hiểu sâu về nguyên lí hoạt động cơ bản của máy tính bởi chúng đã được che đậy bởi các hộp đen hay hàng tá các phần mềm độc quyền, cũng giống như việc chúng ta vào rừng mà lại chỉ thấy cây chứ không thấy rừng. Mặc dù, máy tính ngày càng trở nên phức tạp nhưng chúng vẫn có chung những nguyên lí cơ bản. Thế nên, em nghĩ nếu muốn cho các sinh viên hiểu cách thức máy tính hoạt động, và hiểu nó một cách thấu đáo, thì có lẽ cách tốt nhất là cho họ xây dựng một máy tính hoàn chỉnh, chạy được, thông dụng và hữu dụng cùng với phần mềm và phần cứng, từ khởi đầu, từ những nguyên lý cơ bản. Do đó, em đã chọn đề tài Xây dựng và mô phỏng cách thức hoạt động của máy vi tính nhưng do đề tài khá lớn nên em chỉ dừng ở mức mô phỏng thành phần quan trọng nhất của máy tính đó là ALU.

Sử dụng chương trình mô phỏng phần cứng có tên Hardware Simulator để mô phỏng chip ALU của máy tính. Tiến hành xây dựng cấu hình cho chip ALU từ những nguyên lí cơ bản nhất thông qua ngôn ngữ đặc tả phần cứng HDL từ đó đưa vào phần mềm để chạy.

Hardware Simulator có thể mô phỏng cách hoạt động của hầu như toàn bộ các thành phần của máy tính như:

Sử dụng Hardware Simulator giúp hiểu sâu được cách hoạt động của các phần cứng này khi nó hoạt động từ đó có thể mở rộng kiến thức lên cao hơn nữa.

4. Phương pháp nghiên cứu

Ø Phương pháp phân tích và tổng hợp lý thuyết

Ø Phương pháp mô hình hóa

II. Kết quả

1. Kết quả nghiên cứu lý thuyết

1.1. Kiến trúc của một hệ thống máy tính điện tử?

Cấu trúc phần cứng chính của một hệ thống máy tính gồm:

Ø Bộ xử lí trung tâm (CPU) – dùng để điều kiển và xử lí dữ liệu

Ø Bộ nhớ chính (Primary Storage) – lưu dữ liệu

Ø Bộ nhớ thứ cấp (Secondary Storage) – lưu trữ dữ liệu vĩnh viễn

Ø Các thiết bị vào ra

Ø Hệ thống trao đổi – cung cấp cơ chế giao tiếp giữa các thành phần của máy tính

Cấu trúc trên được tổ chức gồm nhiều thành phần từ phần cứng tới phần mềm và chúng được chia thành các lớp, mỗi lớp chịu trách nhiệm riêng

1.2. Cổng Logic

Cổng Logic là thành phần cơ bản nhất của máy tính điện tử, đó là mạch điện thực hiện một hàm Boole lý tưởng hóa. Có nghĩa là, nó thực hiện một phép toán logic trên một hoặc nhiều logic đầu vào, và tạo ra một kết quả logic ra duy nhất, với thời gian thực hiện lý tưởng hóa là không có độ trễ.

Có 2 loại cổng logic đó là loại đơn giản (Elementary Logic Gate) như NAND, OR, AND, NOT và loại phức hợp (Composite Logic Gate) phức tạp hơn được tạo ra từ những cổng logic đơn giản có thể kể đến như ADDER, MUX

Một cổng logic là một con chip đơn rất đơn giản được thiết kế để thực hiện chức năng định sẵn.

Để thể hiện các chức năng của hàm logic trên phần cứng có thể dùng mạch điện đơn giản như sau:

Khi muốn biểu diễn kết quả 1 của hàm logic, chúng ta sẽ giả sử là chiếc đèn sẽ sáng và ngược lại đèn sẽ tắt khi hàm logic trả về giá trị 0

Dưới đây là một số cổng logic đơn giản thường gặp

Cổng NAND

Ø Có 2 giá trị đầu vào và một giá trị đầu ra

Ø

Ø Code minh hoạ cách hoạt động: if (a==1 and b ==1) then out=0 else out=1

Cổng AND

Ø

Ø Code minh hoạ cách hoạt động: if (a == 1 and b == 1) then out = 1 else out = 0

Cổng OR

Ø

Ø Code minh hoạ cách hoạt động: if (a==1 or b==1) then out = 1 else = 0

Cổng NOT

Ø

Ø Code minh hoạ cách hoạt động: if (in ==0) then out =1 else out =0

1.3. Ngôn ngữ miêu tả phần cứng HDL (Hardware Description Language)

HDL là ngôn ngữ đặc tả phần cứng, nó đơn giản chỉ là một file văn bản dùng để miêu tả các chức năng mà một con chip thực hiện. HDL thường dùng để xây dựng và thử nghiệm một con chip.

Với hình minh hoạ cổng logic OR ở bên trên, có thể suy luận ra rằng hàm OR chỉ đưa ra kết quả 1 trong 2 trường hợp là một trong 2 đầu vào bằng 1, từ đó ta có thể xây dựng nên sơ đồ cổng như sau

Sơ đồ cổng đôi khi còn gọi là giao diện của một con chip (Gate Interface), dựa vào sơ đồ cổng này ta có thể bắt đầu viết ra ngôn ngữ HDL để đưa vào chạy thử trên máy tính.

Xem thêm: TruyệN Ma 12 Cung Hoàng Đạo Của Exo :, Cung Hoàng Đạo Của Exo

Một đoạn mã trong file HDL để mô tả chức năng của hàm XOR

Một chip được định nghĩa một chương trình HDL riêng biệt trong mỗi file. Chip XOR sẽ có file HDL là xor.hdl

Cấu trúc của một HDL gồm 2 phần là phần đầu và phần thân. Phần đầu sẽ định nghĩa giao diện của con chip, phần thân định nghĩa chức năng mà con chip sẽ thực hiện.

1.4. Biểu diễn số học trong máy tính

Chúng ta đã biết máy tính chỉ có hiểu được 2 giá trị là 0 và 1. Vậy máy tính có thể làm gì với 2 con số này, dĩ nhiên là chúng ta chế tạo ra máy tính để làm điều gì đó có ích cho con người.

Không giống như hệ thập phân, được tạo ra trên cơ 10 số, hệ nhị phân được ra bởi 2 số. Khi được cho một số nhị phân, giả sử như “10011”, và số này biểu diễn một số nguyên, ta có biểu diễn số này ở dạng thập phân theo quy tắc sau:

Cho x = xnxn-1….x0. Giá trị của x theo cơ số b kí hiệu là (x)b được tính như sau:

Cộng hai số nhị phân?

Một cặp số nhị phân có thể cộng với nhau từng số một từ phải qua trái theo phương pháp khi cộng số thập phân. Đầu tiên chúng ta cộng hai số ngoài cùng bên phải, còn gọi là Least Significant Bits (LSB) của hai số nhị phân sau đó cộng bit nhớ (có thể là 0 hoặc 1) vào tổng của cặp bit tiếp theo bên trái. Chúng ta tiếp tục quá trình này đến khi cặp bit ngoài cùng bên trái hay còn gọi là Most Significant Bits (MSB) được cộng. Nếu cặp bit MSB có kết quả bit nhớ là 1, chúng ta nói phép cộng bị tràn (overflow), ngược lại phép cộng hoàn thành.

Biểu diễn số nhị phân có dấu trong máy tính?

Một hệ nhị phân n số có thể tạo ra một tập 2n các số nhị phân khác nhau. Nếu chúng ta phải biểu diễn số âm, giải pháp đơn giản đó là chia tập số nhị phân thành hai tập con bằng nhau, một nửa là tập các số dương và một nửa là tập các số âm. Mỗi tập số đều chứa một kí hiệu số để nhận biết đó là số âm hay số dương

Điều này dẫn đến việc chúng ta phải thiết kế ra phương pháp biểu diễn số âm trong máy tính. Phương pháp sử dụng ngày nay bởi hầu hết các máy tính hiện đại gọi là phương pháp bù 2. Trong một hệ nhị phân với n số, số bù 2 của số x được định nghĩa như sau:

Ví dụ, với số nhị phân 5 bit, số bù hai của số (-2)10 hay (00010)2 là

25 – (00010)2 = (32)10 – (2)10 = (30)10 = (11110)2. Để kiểm tra kết quả của phép tính, chúng ta có thể tính (00010)2 + (11110)2 = (00000)2

Như vậy, phương pháp bù 2 có thể biểu các số nguyên có dấu và không dấu mà không cần bất kì phần cứng đặc biệt nào.

Thông qua biểu diễn số âm chúng ta có thể liên tưởng đến phép trừ hai số nhị phân x – y có thể biến đổi thành x + (-y).

1.5. Tìm hiểu ALU

ALU (Arithmetic Logic Unit) là bộ xử lí số học trong máy tính, là một trong 3 thành CPU thực hiện các chức năng tính toán.

Những con chip bên trong cũng tương tự như những con chip logic nhưng thay vào đó nó thực hiện các phép tính toán số học.

Xem thêm: Bài Thuốc Dân Gian Trị Hở Van Tim Hiệu Quả, Cây Thuốc Nam Chữa Bệnh Hở Van Tim

Phần quan trọng nhất của một CPU đó chính là ALU. ALU sẽ tính toán thông qua một hàm xác định fi (x, y) trong đó x và y là 16 bit đầu vào và out là 16 bit đầu ra được ALU tính toán, fi là hàm mà hàm toán học hoặc logic mà ALU lụa chọn từ kho chứa các hàm này. Chúng ta sẽ hướng dẫn cách ALU chọn các hàm này bằng cách đưa vào một bit điều khiển gồm 6 bits, thông qua 6 bits này ALU sẽ biết cần phải tính toán cái gì để lựa chọn từ kho chứa các hàm tính toán. Mỗi một bit trong 6 bit điều khiển sẽ hướng dẫn ALU làm một nhiệm vụ khác nhau. Kết hợp 6 bit lại với nhau sẽ làm cho ALU có thể thực hiện được đa dạng rất nhiều chức năng. Vì chúng ta có 6 bit điều khiển nên sẽ có 26 = 64 hàm khác nhau.

Chúng ta có thể thấy lập trình ALU để tính toán một chức năng nhất định được điều khiển thông qua 6 bit. Dưới đây là mô phỏng thiết kế của ALU

Ø Đầu vào x, y : 2 số nhị phân 16 bit

· zx: Lưu trữ các bit đầu vào là 0 của x

· nx: Đảo ngược giá trị của x

· zy: Lưu trữ các bit đầu vào là 0 của y

· ny: Đạo ngược giá trị của y

· f: Mã hàm, 1 là biểu thị phép cộng, 0 biểu thị phép AND

· no: Đảo ngược giá trị đầu ra

Ø Đầu ra out : 16 bit nhị phân kèm theo hai biến điều khiển

· Zr: True nếu out = 0

· Ng: True nếu out 1.  

2. 2. Chạy trên phần cứng mô phỏng

Đây là một file HDL mô phỏng ALU để chạy trên phần cứng mô phỏng

Giao diện chương trình mô phỏng phần cứng

Nạp chip ALU.hdl vào chương trình:

Thực hiện phép tính y – x (20 – 30) với bit điều khiển 000111

. NAND to Tetris http://www.nand2tetris.org/

. Sách The Elements of Computing Systems: Building a Modern Computer from First Principles https://www.amazon.com/Elements-Computing-Systems-Building-Principles/dp/0262640686/ref=ed_oe_p