Làm thế nào chỉ với việc bật tắt dòng điện đi qua bóng bán dẫn, các bộ xử lý có thể thực hiện được các phép tính cũng như các tác vụ phức tạp khác?
Những bộ xử lý điện toán hiện đã trở nên quá quen thuộc trong cuộc sống hàng ngày của chúng ta, chúng hiện diện trong các máy tính cầm tay tính toán đơn giản, các máy tính cá nhân phức tạp, cũng như cả trong các điện thoại, tablet mà chúng ta cầm theo người hàng ngày.
Mặc dù đa dạng về hình dạng cũng như chức năng, chúng đều chung một nguyên lý hoạt động, đó là việc bật tắt dòng điện đi qua bóng bán dẫn để biểu diễn cho các số 0 và 1 trong hệ đếm nhị phân. Tuy nhiên, nếu chỉ dựa vào việc bật tắt dòng điện đi qua bóng bán dẫn, bộ xử lý thực hiện việc tính toán cũng như các tác vụ khác như thế nào?
Các cổng logic – thành phần cơ bản của mỗi phép tính
Bản thân mỗi bóng bán dẫn đơn lẻ thì khó có thể làm gì hơn được, nhưng khi được ghép nối một cách chính xác với nhau, chúng sẽ tạo thành các cổng logic (các Logic Gate). Các cổng logic là những mạch điện siêu nhỏ được tạo thành từ các bóng bán dẫn.
Với đầu vào là hai bóng bán dẫn, dựa vào trạng thái đóng mở của chúng trong mạch điện, mỗi cổng logic sẽ cho ra kết quả là 0 hoặc 1 tương ứng. Tùy vào cách ghép mạch giữa bóng bán dẫn đầu vào và đầu ra, có 8 cổng logic cơ bản: cổng OR, cổng XOR, cổng NOR, cổng XNOR, cổng AND, cổng NAND, cổng NOT và cổng Buffer (cổng đệm).
Ví dụ cổng OR là một mạch song song với hai đầu vào là hai bóng bán dẫn. Khi có dòng điện đặt vào cổng, chỉ cần một trong hai bóng bán dẫn đầu vào bật (có đầu vào là 1 hoặc True) thì đầu ra của cổng sẽ có điện (hay trả ra kết quả là 1 hoặc True).
Còn cổng AND là một mạch nối tiếp với 2 bóng bán dẫn đầu vào. Do vậy, cổng AND chỉ trả ra kết quả True (1) nếu cả hai cổng đầu vào là True (1) (hay cả hai bóng bán dẫn đều bật để dòng điện đi qua).
Cổng NOT chỉ là một công tắc đóng mở dòng điện, do vậy nó là cổng nghịch đảo logic của các cổng trên. Do vậy, các cổng có tiền tố N, như NOR, NAND và XNOR là phiên bản ngược lại của các cổng cơ sở trên.
Trong khi đó, cổng XOR lại là sự kết hợp của ba cổng AND, OR và NOT với nhau theo cách thiết lập đặc biệt. Đặc tính của cổng XOR là sẽ cho ra kết quả True (1) nếu một trong hai đầu vào là True (1). Nhưng nếu cả hai đầu vào của cổng XOR giống nhau, kết quả trả về sẽ là False (hay 0).
Làm toán bằng cổng logic như thế nào?
Kết hợp hai cổng logic trên, cùng với một mạch cộng toàn phần (full adder), bạn có thể thực hiện được phép tính cộng hai số nhị phân cơ bản.
Sơ đồ trên đây biểu diễn mạch cộng bán phần (half adder) với hai đầu vào A và B, cùng các XOR và cổng AND. Đầu vào A được bật lên trong khi đầu vào B đang tắt, tương tự như việc 1 và 0 được nhập vào phép tính cộng. Do chỉ có một trong hai đầu vào được bật lên, cổng XOR được bật lên và cho ra kết quả 1, còn cổng AND vẫn tắt khi chỉ có một trong hai đầu vào được bật lên.
Lúc này, nếu bật cả hai đầu vào A và B, tương tự như việc nhập vào phép tính 1+1. Lúc này cổng XOR sẽ bị tắt đi còn cổng AND được bật lên vì cả hai đầu vào đều bật, trả ra kết quả đúng của phép tính 1+1=2, hay 10 trong hệ nhị phân.
Do một bit máy tính không thể lưu trữ giá trị nào lớn hơn 1, nên kết quả của phép tính sẽ được ghi vào 2 bit đầu ra. Bit SUM sẽ ghi chữ số 0 của kết quả trả về, còn ký tự 1 được ghi vào bit số dư Cin (Carry In) trong mạch cộng bán phần này.
Tuy thực hiện được phép tính 1+1=2, mạch cộng bán phần này lại không thể làm được gì khác với chỉ 2 bit đầu vào. Do vậy, để thực hiện được các phép tính phức tạp hơn, mạch cộng toàn phần (Full Adders) được thiết kế nên từ việc ghép các mạch cộng bán phần này lại với nhau.
Với thiết kế này, mạch cộng toàn phần sẽ có 3 đầu vào với hai số được nhập vào, cùng với số dư Cin của phép cộng bán phần trước. Khi nhiều mạch cộng được nối với nhau thành chuỗi, số dư Cin của mạch này sẽ được chuyển thành đầu vào cho mạch cộng kế tiếp.
Thiết kế này cho phép bộ xử lý thực hiện được các phép tính phức tạp hơn, nhờ việc bổ sung thêm các mạch bán cộng vào chuỗi này. Nhiều bit đầu vào hơn nghĩa là nhiều mạch cộng toàn phần hơn được thêm vào chuỗi.
Hầu hết các phép toán đều được hoàn thành nhờ việc bổ sung thêm các mạch vào chuỗi tính toán này. Phép tính nhân chỉ là phép cộng lặp đi lặp lại nhiều lần, còn phép trừ có thể thực hiện với các bit nghịch đảo thích hợp, còn phép tính chia là việc lặp lại của phép trừ. Ngoài ra, các bộ xử lý máy tính hiện đại đều có các giải pháp hỗ trợ bằng phần cứng để tăng tốc độ thực hiện các phép tính phức tạp hơn.
Các phép tính càng phức tạp, càng cần đến nhiều cổng logic để thực hiện, nghĩa là càng nhiều hơn các bóng bán dẫn. Đây cũng chính là lý do khiến các nhà thiết kế và phát triển chip cần các bóng bán dẫn nhỏ nhất có thể, để có thể nhồi nhét nhiều đến mức tối đa các bóng bán dẫn trong mỗi bộ xử lý có kích thước giới hạn.
Devmaster Academy via GenK