【无标题】

嵌入式计算机硬件体系设计学习笔记1

1.嵌入式系统的特点

嵌入式系统的软硬件均可裁剪,能够满足对象要求的最小软硬件配置。

2.嵌入式系统须满足环境的要求

具备高度可定制性,须满足对象系统的环境要求,如物理环境(集成度高、体积小)、电气环境(可靠性高)、成本低(价廉)、功耗低(能耗小)等高性价比要求。此外,还要满足对温度、湿度、压力等自然环境的要求,民用和军用嵌入式系统对自然环境的要求差别很大。

3.嵌入式系统的软件固化在非易失性存储器中

为了提高执行速度和系统可靠性,嵌入式系统中的软件一般都固化在Flash等非易失性存储器中,而不是像通用计算机系统那样存储于磁盘等载体中。

嵌入式系统的发展现状:嵌入式Linux具有开放源代码、系统内核小、效率高、内核结构完整等特点,裁剪后的系统很适合信息家电等嵌入式系统的开发。

嵌入式系统的发展趋势:联网成为嵌入式系统的必然趋势;嵌入式系统需实现小尺寸、微功耗和低成本,为此,需降低处理器的性能,限制内存容量和复用接口芯片。

技术的融合:作为嵌入式系统的主流技术,微控制器MCU、微处理器MPU、数字信号处理器DSP和CPLD/FPGA不仅都有SoC的趋势,且彼此之间有相互融合的趋势。

SoC化的技术含义就是在一个芯片上广泛使用知识产权IP(Intellectual Property),从而加速嵌入式系统的研制和开发过程。从设计的而角度来看,SoC是一个通过设计复用达到高生产率的硬软件协同设计的过程;从方法的角度来说,其在开发工具和程序设计方面做了许多突出的改进,如IP核可重用设计、规范化的接口及测试方法、内置嵌入式系统等。

SoC嵌入式系统从真正意义上实现了所谓的“片上系统”,即芯片级的系统应用。一个嵌入式微处理器芯片可以包含若干个知识产权IP模块,用户可以根据需求选用某种型号的芯片或向制造厂商定制。嵌入式系统的软件开发落后于硬件技术的发展,能解决这一问题的重要途径为使用“可重用”的IP模块程序IPP(Intellectual Property Program),其能极大地加速软件的开发过程。

MCU和DSP器件两者功能的混合处理器,混合处理器采用多内核体系结构和统一内核体系结构支配着两种根本不同的芯片设计方法。从本质上来说,多内核体系结构的设计人员主要通过将一个控制处理器和一个DSP安排在一块芯片上来实现,而统一内核体系结构的方式则是通过扩展控制处理器的指令集来容纳DSP指令(反之亦然)。

ARM与DSP的结合:微处理器实现整个系统的控制,而DSP负责执行计算密集型操作,然后通过一定的手段实现微处理器与DSP间的接口以满足嵌入式系统的实时性要求。

MIPS(million instruction per second):单字长定点指令平均执行速度,每秒处理的百万级的机器语言指令数。用于衡量CPU的速度。

指令执行4阶段 :
①取指:将下一条指令从存储器中取出来;
②解码:决定指令中所定义的操作类型;
③执行:执行指令所定义的操作;
④回写:将指令操作结果存储起来。

为了同步内部操作以及内部与外部的通信,所有现代处理器都采用时钟信号。一个简单的串行执行处理器在每个指令阶段需要一个是时钟周期。

普遍意义上来说,流水线形成了两个或多个功能操作在时间上的重叠,以便多个作业能并发地完成。

流水线的一般原理可以用如下3个步骤表示。
①划分一个作业为分作业;
②将每个分作业安置在流水线的一级上;
③将属于相连作业的各分作业在时间上重叠执行。

为了将时间重叠(time-overlapping)技术用到指令集并行,每一条指令被分解为指令序列。与串行地执行指令序列相比,让属于不同指令的多个动作序列在时间上重叠起来,能得到较高的吞吐量。
换言之,在每个是时钟周期,一条新的指令可以从流水线的起始段启动,而其他指令则在流水线的后续各级继续执行。这一流水线模式中,有多少级便可以有多少条相连的指令在流水线上同时执行,而流水线的每一级处理着一条不同的指令。
指令流水线是提高处理器处理速度的关键技术之一。

计算机系统的两种基本形式的存储器:主存储器(primary memory)和次级存储器(secondary memory)或辅助存储器(auxiliary memory)。
如何降低成本来获得高性能,是计算机设计的目标之一。
为了实现高速访问大容量存储器的性能目标,绝大部分计算机均采用了存储器分层、高速缓存和虚拟存储技术。

通常,存取速度越快价格越高,容量越大则速度越慢。现代计算机系统通常把不同容量、不同速度的存储设备按一定的体系结构组织起来,形成一个统一的存储系统,以解决存储容量、存取速度和价格之间的矛盾。

通常,执行中的程序及其相关联的数据都存放在主存储器中,不活动的程序及数据则存放在次级存储器中。不活动的程序只有在它们被传送(或加载)到主存储器之后才能得到执行。存放在主存储器的一条指令及其相关数据在译码和执行之前必须被加载到CPU的寄存器中。

计算机存储系统的基本三级层次结构:CPU寄存器、主存储器和次级存储器。
存储器系统的两个性能度量:速度和容量。第一,CPU和它的寄存器以极高的速度工作,这要求主存储器有与CPU处理速度相匹配的访问速度。但是,处于成本的考量,主存储器慢得多。由CPU和存储器之间的速度差产生的存储器瓶颈(memory bottleneck)或存储器等待时间(memory latency)极大影响着存储器系统的性能。第二,每一个主存储器都有容量限制,从而制约了主存储器存放可执行程序的规模。有一些类型的次级存储器(例如磁带)实际可认为有无限容量。为了弥补这些限制,在大多数现代计算机系统中采用了更完善的存储器层次结构。
芯片内的高速缓存(cache),通常成为第一级cache,在芯片外的,被成为第二级cache。显然,级别越低,存储容量越大,访问速度越慢。可以想象,在这个存储器层次金字塔的底层就是Internet。在这一级,存储容量几乎是无限大的,访问时间也常常是无限长的。

高速缓存
高速缓冲存储器cache和流水线共同构成了RISC成功的两大技术支柱。在某些机器中,还采用了多级cache结构。
在现代处理器设计中,高速缓存技术有效地解决了处理速度和存储速度间的匹配问题,从而成为RISC成功的一项非常重要的支撑技术。
高速缓存技术用来缓解冯诺依曼瓶颈,提高检索信息的软硬件系统性能的重要优化技术。高速缓存cache的作用是居中斡旋。也就是说,一个高速缓存所处的位置,是在提出请求的机构和响应这个请求的机构之间的通路上,它被配置来截取和处理所有的请求。
高速缓存技术的核心思想是高速的暂时存储:高速缓存保存所选择数据的一个本地副本,只要有可能,就用这个本地副本回应请求。由于高速缓存比常规的请求响应机构回应得更快,所以提高了性能。
层次存储体系的基本原理是基于数据访问局部性现象的。按照存储器“靠近”CPU的程度来区分。越靠近CPU,存储器速度越快,容量也越小。注意,此处所说的靠近不仅仅是指“物理位置上的靠近”.速度最快的而存储器同时也是最昂贵的。

一个存储体系可以包含多个不同的存储层次,但在某一时刻,一般只在相邻的两层之间进行数据交换。在主存和cache之间进行信息交换的最小单位称为“块”或“行”."命中率“是衡量存储体系把握数据访问局部(locality)的一个重要性能参数,是指利用CPU产生的有效地址可直接在存储体系的高层访问到所需信息的概率。局部性有两种含义,一种称为引用局部性,指的是程序会访问最近访问过的数据和指令;另一种称为时间局部性,指的是访问一个元素后,很可能在不久的将来再次访问该数据。
设计一个高速缓存时,通常希望使失效率或不命中率访问时间、由于不命中产生的延迟,以及更新主存所需的代价等性能参数尽可能小。由于性能方面的考虑是采用存储体系的主要原因,所以命中时间和失效损失是非常重要的。

命中时间是指访问高层存储器所需的时间,其中包括判定访问是否命中的时间。失效损失是指用下一级存储其中响应块替代上一级的块的时间,加上将该块发送到响应设备(通常是CPU)的时间。失效损失可以进一步分为访问时间和传输时间两个部分,前者是指在出现失效时访问到块中第一个字的时间;后者是指传输块中其他字的附加时间(即传输冗余)。访问时间依赖于低层存储器的延迟,而传输时间主要依赖于两层存储器之间的带宽和块的大小。

由于命中率或失效率和硬件的具体速度无关,故不能片面地根据它们来评价存储体系的性能好坏。用存储器的平均访问时间来评价一个存储体系的性能;存储器的平均访问时间的计算公式如下:
存储器平均访问时间=命中时间+失效率*失效损失
失效损失是处理cache失效所需的时间,包括访问存储器的时间。由于cache访问时间通常处于处理器设计的关键路径上,所以cache命中时间常常决定着处理器的时钟周期,因此cache的命中时间非常重要。
通常,在命中时间上的提高比在失效率上的改进耗费更多。增加存储块的大小还会增加失效损失,从而导致延长存储器平均访问时间。

ASIC与FPGA的区别
1.门数上有数量级的差别,ASIC运行时钟也远高于FPGA。ASIC只有一次机会,FPGA因为可以编程,coding的灵活性相对较高。
仅仅从RTL设计上来说:
①ASIC更保守,对逻辑的改动需要慎重,并要做好备选方案,以防改错。
②ASIC对coding style的要求更高,所有模块的coding风格要求一直,有利于后端以及后续的check。
③ASIC设计对时钟和复位更加重视。
④ASIC要考虑SCAN测试和BIST的问题。
⑤FPGA多采用现成IP,需要考虑资源均衡,不能将某一资源撑爆了,故FPGA存在资源浪费问题。ASIC只考虑性能和功耗,在逻辑选择上除了SRAM,CLK和复位相关,都是手写的,逻辑基本没有浪费,也更加紧凑。
⑥ASIC时序预见性更好,可调整度高,故可以写很大的逻辑。

FPGA和ASIC开发流程的区别:
①首先是要实现功能,方式一般采用HDL描述,如Verilog,VHDL。当然对于小规模电路也可以采用电路图输入的方式。
②验证(保证电路功能的正确性),也可以通过软件仿真、硬件仿真等方式实现。软件仿真一般比较直观,方便调试,每个时刻的状态都能看到,类似于调试软件程序。硬件仿真一般是指FPGA验证,就是把电路用FPGA实现,优点是速度很快。
前两步对于数字IP来说,ASIC和FPGA基本一直,除非是一些实现技巧的差别。
③在描述的电路正确性得到确保后,需要实现,即将代码变成实实在在的电路,如寄存器或者是与非门,这个过程称为综合。由于电路规模日益复杂,一般最基本的电路就被做成了cell,如寄存器,与非门,就不会再细化到用三极管怎么去搭建。即FPGA和ASIC的最小单元是不同的,FPGA是做好的电路,一般需要顾及通用性和效能,基本电路单元就做得比较大,如LUT(即由寄存器和与非门构成),可能实际情况中,你只用了一个与门,但还是要占用这么一个LUT单元。对于ASIC来说,两输入的与非门就是一个简单的门电路,甚至为了区分驱动能力和时序特性差异,还分了好几个等级,有的面积小,有的驱动能力强。总的来说,这一步就是要将你的描述变成基于库的电路描述。
④得到基于库的电路描述后,需要进一步考虑这些单元如何摆放的问题,这个过程称为布局布线。FPGA的话连线资源有限,需要不断地调整,在保证时序要求的情况下,将电路映射到其固定的资源分布图中间。ASIC的话一般是根据周边电路需求,时序要求,将电路放到芯片的某一个位置。在摆好后还要考虑连线是否能通,各级延时是否满足电路的建立和保持时间要求等。
⑤输出。FPGA就是输出一个配置文件,告诉FPGA芯片该如何配置其电路,使其实现预期功能。该文件可以在FPGA上电后再由PC下载进行,也可以保存再Flash里,电路上电后自动配置。ASIC就是输出一个版图文件,告诉代工厂怎么腐蚀硅片,怎么连接金属等。
核心目的是为了确保所设计的电路正确及正确实现电路。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值