Hầu hết các ALU được xây dựng như thế nào và có thể 'xây dựng riêng của bạn' không?


11

Tôi đã thực sự cố gắng tìm hiểu về trình độ máy tính rất thấp. Tôi đã xem rất nhiều trang homebrew và nó khá nhiều để tham gia. Tôi đã tham gia các lớp về kỹ thuật điện tử ở trường đại học, nhưng chúng tôi không thực sự đi sâu vào chủ đề này (đó là khoa học máy tính, vì vậy hầu hết trong đó thực tế là các thuật toán và như vậy).

Dù sao, hầu hết các ALU được xây dựng như thế nào? Tôi nhận ra rằng đó không phải là phần duy nhất của máy tính, nhưng nó vẫn là một phần quan trọng.

Và bạn có thể sắp xếp việc xây dựng ALU của riêng mình chỉ bằng cách sử dụng cổng logic (cho mục đích học tập) không? Tôi hiểu điều này nghe có vẻ ngu ngốc đối với những người hiểu biết hơn, nhưng tôi chỉ đang cố gắng để hiểu. (Heck, ngay cả một adder đơn giản cũng sẽ là một dự án gọn gàng.) Nếu vậy, điều này sẽ được thực hiện như thế nào? Có bất kỳ ví dụ phần cứng? (Tôi đã tìm kiếm xung quanh Google, nhưng tôi không thể tìm thấy bất cứ điều gì thuộc loại có hướng dẫn từng bước giải thích mọi thứ).


1
Bạn có thể quan tâm đến điều này .
Trưởng khoa

6
Phát biểu từ bên trong một nhóm chip CPU, nếu bạn quan tâm đến kiến ​​trúc máy tính và CPU thì các cuốn sách kinh điển là "Thiết kế và tổ chức máy tính: Giao diện phần cứng / phần mềm" theo sau là "Kiến trúc máy tính: Phương pháp định lượng". Chúng được gọi là "Patterson và Hennessy" và "Hennessy và Patterson", tương ứng.
Ross Rogers

@Dean - Vâng, dây mã màu là dành cho những kẻ yếu đuối! :-)
stevenvh

Dự án học kỳ của chúng tôi trong EE360M tại UT Austin năm 1994 là ALU 4 bit dựa trên ngăn xếp được triển khai trên bảng demo Xilinx với XC3000-thứ gì đó, được sử dụng như một ngăn xếp 16 cấp, đưa giá trị cao nhất của nó lên màn hình 7 đoạn LED và XC4000 - thứ gì đó là ALU thực tế. Đặt đầu vào và hoạt động của bạn trên các công tắc DIP, nhấn một nút và bạn sẽ đến đó. XC4k có bộ tạo dao động bên trong với một số tần số từ 63 kHz đến 8 MHz và lớp của chúng tôi một phần dựa trên tốc độ thiết kế của chúng tôi có thể đi và vẫn hoạt động.
Mike DeSimone

1
@Shubham: Một khi tôi thấy rằng tôi biết rằng tôi cần phải tránh xa Minecraft ... Tôi sẽ không làm gì khác ... O_o
Mike DeSimone

Câu trả lời:


15

Bạn có thể xây dựng chúng hoàn toàn từ các cổng logic cơ bản và kết quả sẽ là một tác phẩm nghệ thuật hay :-).

Chuỗi logic 74xx cũng chứa 74LS181 , ALU lát 4 bit , giúp đơn giản hóa mọi thứ một cách quyết liệt. Bit ALU đã được sử dụng để xây dựng ALU phức tạp hơn (đọc: độ dài từ dài hơn), nhưng các công nghệ mới hơn đã khiến loại IC này trở nên lỗi thời.
lưu ý: TTL (74xx) chỉ là một công nghệ được sử dụng cho cổng logic. Hiếm khi sử dụng nữa. Nó được theo sau bởi Schottky công suất thấp: 74LSxx, nói đúng ra cũng là một dạng của TTL. Ngày nay có hàng tá họ logic, tất cả đều dựa trên CMOS tốc độ cao (74HCxx, 74HCTxx, 74ACxx, ...)

Ngày nay, cách thích hợp để tạo ALU sẽ là thực hiện nó trong CPLD hoặc FPGA . Điều này cung cấp cho bạn rất nhiều cổng và HDL (Ngôn ngữ mô tả phần cứng) bạn sử dụng để thiết kế ALU dễ dàng hơn và ít bị lỗi hơn so với việc cố gắng tìm ra cách tự kết nối với cổng logic. VHDL và Verilog là HDL trong ngày.

Một phương pháp khác để tạo ALU (tuy nhiên không sử dụng cổng logic), sẽ là một EEPROM / Flash song song duy nhất . Bạn sử dụng đầu vào A và B và thao tác làm đầu vào (địa chỉ) và lấy kết quả của hoạt động làm đầu ra (dữ liệu). Tất cả những gì bạn phải làm là biên dịch nội dung của ROM, nghĩa là bạn phải ghi ở mọi địa chỉ kết quả của hoạt động sẽ là gì cho các đầu vào A, B và hoạt động tương ứng. Kích thước từ sẽ bị giới hạn bởi kích thước ROM lớn nhất bạn có thể tìm thấy.


5

Bạn có thể xây dựng ALU của riêng mình, nhưng ngay cả các máy tính cũ có chip TTL rời rạc cũng sử dụng một số tích hợp cho điều đó. Ví dụ, nhìn vào chip 74x181. Đó là một lát 4 bit của ALU và được sử dụng trong một số máy tính TTL để thực hiện ALU đầy đủ bằng cách sử dụng một trong các chip này cho mỗi 4 bit.


Xin lỗi vì âm thanh không biết gì, nhưng chính xác thì các chip TTL khác với cổng Logic như thế nào? và được sử dụng trước hay sau cổng logic? hoặc chúng được làm từ các cổng logic: nhầm lẫn:

@Sauron - Tôi đã thêm một ghi chú về các họ logic vào câu trả lời của mình
stevenvh

5

Tôi sẽ bắt đầu trong thế giới HDL trước. Viết một số verilog, sử dụng verilator hoặc icarus verilog để mô phỏng nó. Viết mã sao cho giống với các phần rời rạc và, hoặc, không phải cổng, sau đó nếu nghiêng, hãy tìm một số bộ phận sê-ri 74xx (tái chế?) Và một cái gì đó. HOẶC, có một số $ 50 cộng hoặc trừ các bảng CPLD và FPGA có thể có và bạn có thể đặt alu vào một trong những giao diện bên ngoài để thấy rằng nó đang hoạt động. Tôi sẽ lập luận rằng giáo dục HDL giống như bạn học những điều cơ bản của trình cộng, v.v. và điều chỉnh đầu vào cũng như đầu ra và hoạt động. Nhưng bạn có thể làm điều đó trong một môi trường dễ sử dụng và nhìn thấy trước khi đưa nó vào phần cứng. Rất giống như cách mọi người làm điều đó ngày nay, thiết kế và mô phỏng sau đó triển khai.


1
Chắc chắn rồi. Mô phỏng trước. Sau đó, nếu bạn phải có phần cứng, một FPGA là thực tế nhất. Tăng 74xx TTL cho một cái gì đó phức tạp này sẽ là một dự án lớn không nên giải quyết cho đến khi một thiết kế thực sự được nghĩ ra.
Chris Stratton

5

Đối với sách, tôi chắc chắn đứng thứ hai cuốn sách "Patterson and Hennessy" (IIRC có 3, được ngụy trang thành 3 phiên bản, nhưng thực tế là những cuốn sách hoàn toàn khác. Nếu bạn nghiêm túc: hãy lấy tất cả.)

Nếu bạn muốn thử nghiệm theo cách của mình vào ALU cơ bản hoặc thậm chí là thiết kế CPU: hãy bắt đầu thử nghiệm với một trình giả lập logic. Chúng tôi đã sử dụng DigitalWorks cho các lớp học của mình, nhưng tôi không khuyến nghị điều đó. Logisim ( http://sourceforge.net/projects/circuit/ ) có vẻ đầy hứa hẹn. Những gì bạn cần nắm vững là phân lớp: xây dựng các khối cơ bản như bộ cộng đầy đủ, bộ chọn và lật lật được kích hoạt từ cổng, sau đó xây dựng các thanh ghi, ALU, sắp xếp logic từ các khối xây dựng đó, cho đến CPU với bộ nhớ. Thực sự không khó để xây dựng, giả sử tương đương với CPU PIC (lõi 14 bit), gắn một loạt đèn LED và lập trình để hiển thị màn hình Kitt.

Sau đó, sẽ rất vui khi làm lõi 32 bit, chuyển GCC sang nó, nhận ra nó trong một đồ họa và chạy Linux trên nó. Nhưng bạn sẽ không phải là người đầu tiên ...


4

Đó không phải là một câu hỏi ngu ngốc. Các Wikipedia trang show mạch một cửa cấp như vậy cho một 2-bit ALU. IC ALU được sử dụng phổ biến trong 'lát' - thường là 4 bit, bạn có thể xếp tầng để có chiều rộng xe buýt lớn hơn (xem phần cắt bit ).

Bảng dữ liệu cho ALU Texas 74181 4 bitlice cũng có sơ đồ mức cổng.


4

Câu chuyện về CPU là một trong những thứ ngày càng tăng trên mỗi gói.

Các CPU sớm nhất luôn sử dụng ALU nối tiếp được chế tạo từ một vài rơle hoặc ống chân không. Người đầu tiên phá vỡ truyền thống này là Cơn lốc 1947.

Các CPU được transitor sớm nhất đã chế tạo mọi thứ từ các bóng bán dẫn riêng lẻ.

Máy tính hướng dẫn Apollo (AGM), có lẽ là máy tính đầu tiên được chế tạo từ các mạch tích hợp, chỉ sử dụng một loại IC bên ngoài bộ nhớ: cổng NOR 3 đầu vào. ALU và mọi bộ phận khác của CPU được chế tạo hoàn toàn từ một số lượng lớn IC cổng NOR. Cray 1 (nhanh hơn nhiều) cũng chỉ sử dụng một loại IC ngoài bộ nhớ: một loại cổng NOR khác.

Khi mọi người tìm ra cách nhồi nhét nhiều bóng bán dẫn hơn vào một con chip, các CPU sau này đã sử dụng (tương đối) ít chip hơn để thực hiện ALU.

Một ALU có thể được xây dựng hoàn toàn từ bộ ghép kênh ( "Bộ ghép kênh: Nuke của thiết kế logic chiến thuật" ), sử dụng ít chip hơn so với triển khai NOR.

Dieter Mueller đã đăng một thiết kế ALU 8 bit có nhiều chức năng hơn hai chip 74181 - 74181 không thể dịch chuyển sang phải - được xây dựng từ các chip thậm chí ít hơn: 14 chip TTL phức tạp: hai bộ cộng 74283 4 bit, 4: 1 mux, và một số mux 2: 1.

Giống như nhiều máy tính thương mại quan trọng trong lịch sử, nhiều CPU sản xuất tại nhà sử dụng một số phiên bản của 74181, ALU "hoàn chỉnh" đầu tiên trên một chip đơn.

Nhiều CPU trong số đó đã xây dựng ALU 8 bit hoặc 16 bit (hoặc cả hai) trong số một vài chip 74181 và một vài chip 74182 - mỗi 74181 chỉ xử lý các hoạt động rộng 4 bit. Các máy homebrew thường sử dụng thứ đơn giản nhất có thể sẽ hoạt động - mang theo một chiếc 74181 cho ăn mang theo bên trong, tạo thành một bộ cộng mang gợn. Các máy thương mại sử dụng chip 74181 thường sử dụng máy phát điện mang theo 74182 nhìn về phía trước để thực hiện phép cộng và trừ nhanh hơn đáng kể.

Ngày nay, hầu hết các ALU được ẩn đi bên trong một số chip - một phần nhỏ của CPU, một số loại ASIC khác, hoặc CPLD hoặc FPGA.

Ngay cả sau khi đã có sẵn "máy tính chip đơn", thỉnh thoảng vẫn có người chế tạo ALU tương thích 74181 từ GAL hoặc ALU chỉ sử dụng cổng logic đơn giản hơn, hoặc thậm chí là bóng bán dẫn hoặc rơle riêng lẻ cho mục đích học tập.

Mọi người đã làm nó, do đó nó phải có thể.

Hướng dẫn từng bước giải thích thiết kế và triển khai ALU nghe có vẻ là một ý tưởng thực sự tốt. Vui lòng giúp chúng tôi viết một cái tại wikibook của Bộ vi xử lý, có lẽ là phần "ALU" hoặc "Dây quấn" .



2

Trong lịch sử, một số công việc ALU được thực hiện với sự rời rạc (vâng, bóng bán dẫn và như vậy), và một số có cổng, và rất nhiều với chip 'lát' 4 bit (SN74181 của TI là sớm, và Fairchild 29F01 đã có ngày của nó).
Nhưng HÔM NAY, đó là vấn đề xây dựng các phương trình logic trong ngôn ngữ mô tả logic cổng mảng hoặc PLA. Có các mô-đun dựng sẵn có sẵn trên thị trường sẽ đưa bất kỳ đơn vị logic nhỏ nào được chọn vào thiết kế của bạn, tất cả chỉ cần tiền để cấp phép cho 'IP' (sở hữu trí tuệ).


1
Khi điện trở rẻ so với điện trở, có một số thủ thuật có thể cho phép xây dựng ALU với số lượng bóng bán dẫn rất thấp (ví dụ: bộ cộng đầy đủ sử dụng hai bóng bán dẫn mỗi giai đoạn). Các mạch như vậy rất ngốn điện và không nhanh khủng khiếp, nhưng khi các bóng bán dẫn đắt tiền, chúng có thể tiết kiệm chi phí đáng kể.
supercat
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.