大多数ALU是如何构建的,是否可以“构建自己的”?


11

我一直在真正地尝试了解非常低水平的计算机。我一直在浏览许多自制的页面,并且学习的内容很多。我在大学里修了电子工程课程,但是我们并没有真正深入地研究该主题(这是计算机科学,所以大多数实际上是算法等)。

无论如何,大多数ALU是如何构建的?我意识到这不是计算机的唯一组成部分,但仍然是重要组成部分。

您是否可以仅使用逻辑门(出于学习目的)来构建自己的ALU?我知道这对于那些知识渊博的人来说听起来很愚蠢,但我只是想了解一下。(哎呀,即使是简单的加法器也将是一个整洁的项目。)如果是这样,该怎么做?有硬件示例吗?(我环顾了Google,但是找不到任何可以逐步说明问题的指南)。


1
您可能会感兴趣这个
院长

6
从CPU芯片团队内部来讲,如果您对计算机和CPU体系结构感兴趣,那么经典书籍是“计算机组织和设计:硬件/软件接口”,然后是“计算机体系结构:定量方法”。这些分别称为“帕特森和轩尼诗”和“轩尼诗和帕特森”。
Ross Rogers

@Dean-是的,颜色编码的线用于娘娘腔!:-)
stevenvh 2011年

我们1994年在UT奥斯汀分校的EE360M中的一个学期项目是在Xilinx演示板上实现的基于堆栈的4位ALU,带有XC3000的东西,用作16级堆栈,将其最高价值推向了LED 7段显示器,以及XC4000(实际的ALU)。在DIP开关上设置输入和操作,按一个按钮即可。XC4k具有一个内部振荡器,其频率范围从63 kHz到8 MHz,而我们的等级部分取决于设计的运行速度和工作速度。
Mike DeSimone

1
@Shubham:一旦看到我知道我需要远离Minecraft ...我什么也做不了... O_o
Mike DeSimone

Answers:


15

您可以完全从基本逻辑门构建它们,结果将是一件很不错的事情:-)。

74xx逻辑系列还包含一个74LS1814位分片ALU),可大大简化事情。位片ALU用于构建更复杂的ALU(读取:更长的字长),但是较新的技术已使这种IC淘汰了。
注意:TTL(74xx)只是用于逻辑门的一种技术。很少使用了。其次是低功耗肖特基:74LSxx,严格来说也是TTL的一种形式。如今,有数十种逻辑系列,全部基于高速CMOS(74HCxx,74HCTxx,74ACxx等)。

如今,创建ALU的正确方法是在CPLDFPGA中进行。这给您带来了很多门,并且用于设计ALU的HDL(硬件描述语言)比试图弄清楚如何与逻辑门自己建立连接要容易得多,并且不易出错。VHDL和Verilog是当今的HDL。

创建ALU的另一种方法(尽管不使用逻辑门)是单个并行EEPROM / Flash。您使用输入A和B并将操作作为输入(地址),并获得操作的结果作为输出(数据)。您要做的就是编译ROM的内容,这意味着您必须在每个地址处写出相应输入A,B和操作的操作结果。字的大小将受到您可以找到的最大ROM大小的限制。


5

您可以构建自己的ALU,但是即使具有离散TTL芯片的旧计算机也为此使用了一些集成。例如,看一下74x181芯片。那是一个ALU的4位片,并在某些TTL计算机中用于通过使用每4位这些芯片之一来实现完整的ALU。


很抱歉让您听不懂声音,但是TTL芯片和逻辑门到底有什么不同?TTL是在逻辑门之前还是之后使用的?还是由逻辑门制成:confused:

@Sauron-我在答案中添加了有关逻辑系列的注释
stevenvh 2011年

5

我将从HDL世界开始。编写一些verilog,使用verilator或icarus verilog进行仿真。编写代码,使其类似于离散的和(或)非门,然后倾斜,找到一些74xx系列零件(已回收?)和面包板。或者,可以有一些价格为50美元(含正负)的CPLD和FPGA板,您可以将alu放在其中一个外部具有某种接口的板上,以查看其工作情况。我认为,HDL教育与您学习加法器等的基础以及将输入,输出和操作混合在一起是一样的。但是,在将其用于硬件之前,您可以在易于使用和查看的环境中进行操作。非常像今天的人们如何做,设计和模拟然后部署。


1
绝对。首先模拟。然后,如果您必须拥有硬件,那么FPGA是最实用的。将74xx TTL连接到这种复杂的地方将是一个巨大的项目,只有在认真考虑设计之后才能解决。
克里斯·斯特拉顿

5

对于书籍,我肯定是第二本“帕特森和轩尼诗”书籍(IIRC共有3本,伪装成3版,但实际上是完全不同的书籍。如果您是认真的话,请全部收录。)

如果您想尝试基本的ALU甚至CPU设计方法,请开始使用逻辑模拟器进行实验。我们在课堂上使用了DigitalWorks,但我不推荐这样做。Logisim(http://sourceforge.net/projects/circuit/)看起来很有希望。您需要掌握的是分层:从门构建基本块,例如全加器,选择器和边沿触发的触发器,然后从这些构建块构建寄存器,ALU,排序逻辑,一直到CPU。有记忆。确实,要构建一个相当于PIC(14位内核)CPU,连接一堆LED并对其进行编程以显示Kitt显示器并不难。

之后,做一个32位内核,将GCC移植到该内核,在FPGA中实现它并在其上运行Linux将会很有趣。但是你不会是第一个...


4

这根本不是一个愚蠢的问题。的维基百科页面对于2位ALU示出这样的门电平电路。ALU IC过去通常以“切片”(通常为4位)形式使用,您可以级联以获得更大的总线宽度(请参阅位切片)。

德州74181 4位片ALU 的数据表中也有门电平示意图。


4

CPU的故事是每个包装中越来越多的东西之一。

最早的CPU始终使用由几个继电器或真空管构建的串行ALU。第一个打破这种传统的是1947年的旋风。

最早的晶体管化CPU由单个晶体管构建而成。

阿波罗制导计算机(AGM),也许是第一台由集成电路构建的计算机,仅在存储器外部使用一种IC:3输入或非门。ALU和CPU的其他所有部分完全由大量的或非门IC组成。(快得多的)Cray 1在内存之外仅使用了一种IC:另一种NOR门。

人们发现如何在芯片上填充更多晶体管,后来的CPU使用(相对)更少的芯片来实现ALU。

一个ALU可以完全由多路复用器构建(“多路复用器:逻辑设计的战术核”)构建,使用的芯片要比NOR实现的数量少得多。

Dieter Mueller发表了一个8位ALU设计,该功能具有比两个74181芯片更多的功能 -74181不能右移-由更少的芯片构建而成:14个复杂的TTL芯片:两个74283 4位加法器,大约4:1多路复用器和一些2:1多路复用器。

像许多历史上重要的商用计算机一样,许多家用CPU使用74181的某些版本,这是单个芯片上的第一个“完整” ALU。

这些CPU中的许多都在少数74181芯片和少数74182芯片中构建了8位ALU或16位(或两者)-每个74181仅处理4位宽的操作。自制机器通常使用最简单的可行方法-将一个74181的进位送入下一个的进位,形成纹波加法器。使用74181芯片的商用机器通常使用74182前瞻进位生成器来显着加快加法和减法。

如今,大多数ALU都隐藏在某些芯片内-一小部分CPU,某种其他类型的ASIC或CPLD或FPGA。

即使在“单芯片计算机”可用之后,偶尔也会有人从GAL中构建兼容74181的ALU。出于学习目的而或仅使用更简单的逻辑门甚至单个晶体管或继电器的ALU中。

人们已经做到了,因此它必须是可能的。

逐步讲解ALU设计和实现的指南听起来像是一个好主意。请帮助我们在Microprocess Design Wikibook上写一个,也许是“ ALU”“ Wire Wrap”部分。



2

从历史上看,一些ALU工作是用分立器件(是的,晶体管等)完成的,有些是用门完成的,许多工作是使用4位“切片”芯片的(TI的SN74181是早期产品,Fairchild 29F01成立了)。
但是今天,这是在门阵列或PLA逻辑描述语言中构建逻辑方程式的问题。有市售的预构建模块,可以将任何选定的小型逻辑单元放入您的设计中,只需要花钱就可以许可“ IP”(知识产权)。


1
当电阻器相对于电阻器价格便宜时,有许多技巧可以构建具有非常低晶体管数的ALU(例如,每级使用两个晶体管的全加法器)。这样的电路非常耗电,而且速度并不快,但是当晶体管价格昂贵时,它们可以节省大量成本。
supercat
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.