计算机系统解密:从理解计算机到编写高效代码
上QQ阅读APP看书,第一时间看更新

3.6 硬件和软件

用于制作PROM、EEPROM和闪存的技术不仅仅只能制作存储器。我们很快就会看到逻辑电路是怎样构成计算机硬件的。你在学习编程,知道程序代码中包含逻辑,也可能知道计算机通过指令集向程序公开逻辑。在硬件和软件上做这些有什么区别?两者之间的界限很模糊,很大程度上,除了构建软件要容易得多之外(因为除了设计需要花费时间之外,没有额外的成本),几乎没有区别。

你可能听说过术语固件,它最初只是指ROM中的软件。但如今大多数固件都存在于闪存或者ROM中,所以固件和ROM差别很小。过去,芯片是由极客们设计的,他们通过在一大块透明聚酯薄膜上粘贴彩色胶带来布置电路。1979年,美国科学家、工程师Carver Mead和Lynn Conway出版了Introduction to VLSI Systems,这本书改变了世界,推动了电子设计自动化(Electronic Design Automation, EDA)产业的发展。芯片设计变成了软件。今天的芯片是用专门的编程语言(如Verilog、VHDL和SystemC)设计的。

很多时候,只需要使用一块硬件就可以运行计算机程序。但是你可能会有机会参与一个包括硬件和软件的系统的设计。软硬件接口的设计至关重要。关于芯片不可用、不可编程、功能不必要的例子举不胜举。

集成电路的制造成本很高。在早期,所有的芯片都是全定制设计。芯片是分层的,底部是实际的组件,顶部是金属层,可以将组件连接起来。门阵列的存在是为了降低某些设备的成本,有些预先设计的组件可用,只需定制金属层即可。就像存储器一样,这些芯片可以被能自己编程的PROM等效版本替代。而且也有一个等效的EPROM,可以擦除程序并重新编程。

现代现场可编程门阵列(Field-Programmable Gate Array, FPGA)是闪存的等价物,它们可以在软件中被重新编程。在许多情况下,使用FPGA比使用其他组件便宜。FPGA的特性非常丰富,例如你可以获得包含两个ARM处理器内核的大型FPGA。英特尔最近收购了Altera,很可能在其处理器芯片中加入FPGA。我们很有可能会参与某个使用这些设备的项目中,所以要做好把软件变成硬件的准备。