图书前言

前言

2004年Intel公司由于功耗等技术原因取消了单核处理器的后续研发计划,标志着通用型CPU进入了多核时代,这就意味着CPU性能的提高必须突破之前主要依赖于半导体工艺技术进步的技术途径。在通用型处理器结构方面,ALU算术逻辑单元所占的芯片面积不到10%,这就是说CPU内部大部分的晶体管面积和功耗都不是直接用于算术逻辑运算,而是被多级高速缓存、指令译码、存储控制与管理、分支预测等辅助单元所占用,因此,通用型CPU的计算和功耗效率是非常低的。相比较而言,GPU处理器面向图形处理等应用,大大简化了内部的高速缓存和控制逻辑单元,从而让更多的晶体管直接参与计算,使得一个芯片内部包含上百个计算核。在2010年11月公布的全球最快超级计算机TOP500榜单中,“天河一号”超级计算机采用了GPU加速结构而首次让中国的机器位于排行榜榜首。

  但不管是通用型CPU、GPU或者DSP处理器,其核心结构都是基于1945年冯·诺依曼等人提出的“存储程序计算机”结构,其中存储单元和计算单元在硬件上就是分开的。处理器的运行过程包括取指令、译码、取数、执行、结果返回等流水线过程,其中只有中间的“执行”这一步骤是真正用于计算的。因此,为了充分发挥半导体工艺技术进步带来的成果,提高芯片的性能和能耗效率,必须从底层的核心硬件结构和执行方式进行突破,从而让大部分晶体管能够直接参与计算任务。

  可编程逻辑器件从20世纪80年代以来发展非常迅速。由于早期可编程逻辑器件的接口功能强大,因此它主要用于胶合逻辑应用。后来逐步放弃了基于可编程与或阵列的核心结构,采用了基于查找表的可编程单元结构,从而让它的逻辑功能不断强大,成为专用集成电路原型验证的最佳途径。在FPGA结构中,查找表既可以作存储单元,也可以作为可编程逻辑单元。逻辑单元之间不再以总线的结构,而是以复杂的分布式层次化互连资源进行通信。这些结构上的特点就已经突破了“存储程序计算机”的局限性。至今可编程逻辑器件内部直接嵌入了高速通信IO核、微处理器核、存储器核、DSP模块和复杂的时钟管理硬件模块,从而大大提高了芯片的数据通信与计算能力。我们把这种包含了基于细粒度查找表结构的可编程逻辑单元和各种粗粒度的数据通信与计算单元的现场可编程逻辑器件称为系统级FPGA。为了充分发挥半导体工艺的优势,系统级FPGA采用了业界最领先的半导体工艺技术。从应用领域来看,系统级FPGA正在不断侵占ASIC/ASSP、CPU、DSP器件的市场,涵盖了通信、汽车电子、医疗设备、消费类电子、高性能计算、嵌入式系统、航空航天、工业控制等领域。

  虽然基于配置流与硬件可编程技术的系统级FPGA具有很好的并行性和计算效率,在结构方面克服了“存储程序计算机”的结构劣势,在运行过程方面不再需要指令、译码、取数等指令流操作,但是它的硬件结构还不够成熟,工具链过于复杂。在传统的通用型CPU领域,GCC开源编译器基本上支持各种商用处理器,能够产生二进制可执行文件。但是至今为止还没有一个统一的FPGA编译器,能够支持各种系统级FPGA的可编程结构,从而产生正确的可编程配置文件。也没有一个成熟的工具链,能够有效地支持各种系统级FPGA的软硬件协同仿真、高层次综合和软硬件混合在线调试等技术。为了充分发挥系统级FPGA所提供的硬件优势及其工具链的作用,用户需要了解它的基本硬件结构、EDA软件算法和软硬件协同设计等知识。本书结合复旦大学专用集成电路与系统国家重点实验室在可编程逻辑器件和可重构计算领域的项目开发经验和教学体会,分析比较了各种可编程逻辑器件的结构,定性地说明了基于查找表FPGA结构的优越性。在此基础了介绍了FPGA工具链后端EDA流程和基本算法,并且结合软硬件协同设计技术,提供了基于系统级FPGA的可重构系统和嵌入式系统设计实例。

  在本书的写作和校对过程中,我们得到了国家重点实验室CAD教研室的老师和学生的多方帮助,他们有唐璞山教授、曾璇教授、赵文庆教授、来金梅教授、曹伟博士、谭道珍老师和研究生陈志辉、刘智斌、叶晓敏、邵海波、陈帅、陈佳临、王侃文、陈利光、包杰等。同时也向我们的家人表示歉意,我们没有在周末和假期的时候,安排足够的时间和家人一起度过,再次向他们的付出表示深切的感谢。

王伶俐周学功王颖童家榕2011年8月

复旦大学张江校区