首页 > 其他分享 >【《硬件架构的艺术》读书笔记】06 流水线的艺术(1)

【《硬件架构的艺术》读书笔记】06 流水线的艺术(1)

时间:2022-12-16 00:01:11浏览次数:46  
标签:艺术 06 读书笔记 插入 电路 寄存器 流水线 延迟 时钟

6.1 介绍

流水线通过在较长的组合逻辑路径中插入寄存器降低了组合逻辑延迟,增加了时钟频率并提高了性能。

 图中分别为插入流水线前后的逻辑。长路径插入寄存器后最大时钟频率明显增加,但是也带来了额外的开销,并且增加了系统延迟。

6.2 影响最大时钟频率的因素

 图中电路若TCQA、TSB、THB均为0,Fmax就是组合逻辑最大路径延迟的倒数。

 6.2.1 时钟偏移(Skew)

如图6.3,时钟到达B的时间可能相对于寄存器到达A的时间有一些延迟。这种传播延迟的细小差别,可能对整个系统时序产生无法接受的影响,这种现象也叫做“时钟偏移”(Skew)。

这里感觉说反了。。时钟延迟小于数据路径延迟,才是负时钟偏移。这时,时钟先于数据到达第二个寄存器,会导致提前触发寄存器,这样对保持时间更加友好,但是会导致建立时间更严苛。

6.2.2 时钟抖动(Jitter)

到达电路某一点连续时钟边沿之间间隔的变化称为时钟抖动tjit。Skew是可预测的,Jitter是不可预测的,只能给一个范围。

如图,Jitter会影响始终占空比。

 

图中红线是关键组合电路路径。

 

 根据时序图可以计算最大周期:

 

 

 组合延迟部分可以通过添加多个触发器减少,增加了电路操作的最大频率,显著提升电路的吞吐率。

6.3 流水线

流水线通过存储器件将时钟周期内关键路径分隔开,减少了关键路径延迟并使电路能以更高频率工作。流水线增加了各时钟计算能力,但是由于使用了存储器单元也增加了负载。

 

 

 可以计算总延迟:

 在插入两级流水线后:

 插入流水线之后的延迟:

加流水线后实现8输入加法,吞吐率增加到每个时钟周期计算一次8输入之和,总延迟为3个时钟周期。(增大了延迟,提高了吞吐率)

一般来说使用并行电路比复用电路达到同样的效果在面积和功耗方面的开支更大,因为使用了更多的触发器和额外逻辑,导致了更多连线。

6.4 解释流水线----------一个真实的例子

 这个例子比较简单,就是把各个工序分开,进行流水线生产。

6.5 来自流水线的性能提升

如图两个寄存器之间有一个大规模组合逻辑矩阵。

流水线延迟是指数据进入流水线的输入端到经过处理后输出所消耗的时间。

 

 把同样的电路插入n级流水线:

单级的周期:

延迟最大的流水线决定了最小周期:

总延迟就是时钟周期的n倍

理想情况下各级流水线延迟应当相等,使流水线中最大组合逻辑延迟相同。

所以最小可能的时钟周期为:

最终延迟:

电路速度增加公式可以用插入流水线之后的最大频率除以插入流水线之前的频率得到:

 

 

 

 由6.3和6.5可以得到:

设寄存器和时钟开支占总时钟周期百分比为k

 

 代入6.8:

 

 流水线的性能增加可以定义为:

 

 所以:

 

标签:艺术,06,读书笔记,插入,电路,寄存器,流水线,延迟,时钟
From: https://www.cnblogs.com/magnolia666/p/16984811.html

相关文章

  • Jenkins实践指南-06-Jenkins pipeline 语法02
    3.2.6parameters  [作者:Surpassme]parameters又称参数化,通过参数化可以决定pipeline运行期的行为。pipeline主要支持两种形式的参数化parameters命令参数化和插件参......
  • Djangoday06
    目录Djangoday06一、ORM执行SQL语句1.raw2.connection二、神奇的双下划线查询三、ORM外键字段创建1.ORM外键字段创建理论铺垫2.ORM外键字段创建相关操作四、多表查询(基于......
  • flask-06
    一、flask项目演示pycharm打开项目 安装依赖:虚拟环境 pipinstall-rreq.txt在数据库创建库:movie    看一下:root用户密码不是123,改代码,两个地方(__init__.p......
  • django 06 模型层 ORM查询
    ORM执行SQL语句 神奇的双下划线查询importosdefmain():os.environ.setdefault('DJANGO_SETTINGS_MODULE','djangoorm.settings')importdjangodj......
  • 前端开发系列065-JQuery篇之框架简单介绍
    title:'前端开发系列065-JQuery篇之框架简单介绍'tags:categories:[]date:2018-05-1112:57:52一、jQuery简介jQuery是一款优秀的javaScript库(框架),该框架凭借简洁......
  • 前端开发系列064-网络篇之FormData基本使用
    title:前端开发系列064-网络篇之FormData基本使用tags:categories:[]date:2018-04-1009:31:25FormData简单介绍FormData是Ajax2.0-XMLHttpRequestLevel2提......
  • 前端开发系列063-网络篇之同源策略和跨域请求
    title:前端开发系列063-网络篇之同源策略和跨域请求tags:categories:[]date:2018-03-2710:05:13一、同源策略同源策略说明同源策略(SameOriginPolicy)是一种......
  • 前端开发系列062-网络篇之前端开发Ajax简单介绍
    title:前端开发系列062-网络篇之前端开发Ajax简单介绍tags:categories:[]date:2018-03-2617:05:13一、Ajax技术简单介绍Ajax是一门异步的用于发送网络请求的技术......
  • 前端开发系列061-网络篇之HTML页面渲染的基本过程
    title:前端开发系列061-网络篇之HTML页面渲染的基本过程tags:categories:[]date:2018-03-1112:10:13本文描述了HTML页面渲染的基本(一般)过程,需要说明的是该文并不......
  • 前端开发系列060-网络篇之浏览器、HTML和内核(引擎)
    title:'前端开发系列060-网络篇之浏览器、HTML和内核(引擎)'tags:categories:[]date:2018-03-0511:11:13一、浏览器的发展和特性浏览器的发展浏览器的历史并不......