传感器及其工作原理ppt:2020 2021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修3 2.ppt

2021/12/25 04:38 · 传感器知识资讯 ·  · 传感器及其工作原理ppt:2020 2021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修3 2.ppt已关闭评论
摘要:

传感器及其工作原理ppt:20202021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修32.ppt2020_2021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修3_2§传感器及其工作原理*授课人:李志超我们身边的设计师作品————荣胜

传感器及其工作原理ppt:2020 2021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修3 2.ppt  第1张

传感器及其工作原理ppt:2020 2021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修3 2.ppt

2020_2021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修3_2§传感器及其工作原理
*
授课人:李志超
我们身边的设计师作品————荣胜、凌菲、李世腾同学设计制作的“防儿童高楼坠落的阳台”
下面请我们李世腾同学为大家讲解一下这个特殊阳台的控制原理
下面请荣胜同学说说看第三代“阳台”你有什么新的改进方向呢?
这是2017年安徽省青少年科技创新大赛的厢式电梯电磁防坠系统的电路?
一 、传感器简介
温度传感器
明火探测器
离子感烟器
盒子里面有什么装置?
传感器是指这样一类元件:它能够感知诸如力、温度、光、声、化学成分等非电学量,并把它们按照一定的规律转化成电压、电流等电学量,或转化为电路的通断。
传感器的定义:
二、制作传感器的常用元器件
1、光敏电阻
光敏电阻实物图
点击放大
光照情况
受光表面暴露
受光表面遮住
电阻阻值
电阻小
电阻大
请同学们思考,光敏电阻可以用在哪些地方?
例1.如图所示,R1、R2为定值电阻,L是小灯泡,R3为光敏电阻,当照射光强度增大时,( )
A.电压表的示数增大 B.R2中电流减小
C.小灯泡的功率增大 D.电路的路端电压增大
2、光敏电阻的应用
传感器及其工作原理ppt:2020 2021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修3 2.ppt  第2张

传感器及其工作原理ppt:传感器及其工作原理笔记[整理版].ppt

* * 眷丁困醛踊短湾陀妊屑皿却脓磐麦溅嗽狐覆铂钞央斋撬旷淀快盼幅铝怒绳传感器及其工作原理笔记传感器及其工作原理笔记 肢尾麻缴箩噶鳖簧茅持脱术瓣瞎啼蛆娘杨狡鬃柒俱潜聊剩沂宝股麦多拽替传感器及其工作原理笔记传感器及其工作原理笔记 一、 传感器 1、定义: 3、优点: 4、举例: 指这样一类元件:它能够感受诸力、温度、光、声、化学成分等非电学量,并能把它们按照一定的规律转换为电压、电流、电阻等电学量;或转换为电路的通断。 把非电学量转换为电学量以后,可以很方便的进行测量、传播、处理和控制。 冰箱 声控灯 烟雾报警器 干手机 饮水机… 非电学量→传感器→电学量 2、作用: 澈汛资敞澄抓耳拣狡氢耶铀瞧就箍认棕染椒砍贞菊渤盒凭截谩愈九韶驰谚传感器及其工作原理笔记传感器及其工作原理笔记 当改变光照强度时,电阻的大小也随着改变。一般随着光照强度的增大电阻值减小。 制作光敏电阻的材料一般为半导体。如:硫化镉 半导体靠其中的载流子(自由电子和空穴) 来导电 光敏电阻能够把光照强弱这个光学量 转换为电 阻这个电学量 1)特性: 1、光敏电阻 2)材料: 3)半导体的导电原理: 4)应用:光控电路、光电计数器、报警器 倚灿浸莫捌唯侠颗凋憎注褒娃怔褥淳召苏垫吨卸迁轨钉锥碌眺务猫厢闭玫传感器及其工作原理笔记传感器及其工作原理笔记 2、金属热电阻和热敏电阻 R T O R-T关系示意图 1.金属导线; 2.热敏电阻 ; 凰挡娠古汤磋六往闽置紧娶佯拨胀母吐详数堪拽哪玄涝今翻拳悠噎届尾练传感器及其工作原理笔记传感器及其工作原理笔记 半导体热敏电阻的阻值会随着温度的升高而 __ 减小 1)特性: 热敏电阻能够把 温度这个热学量 转换成为电阻这个电学量 金属热电阻化学稳定性好、测量范围大、但是灵敏度差。 3)应用:电阻温度计、报警器等 2)异同点: 2、金属热电阻和热敏电阻 金属热电阻的阻值会随着温度的升高而_____ 增大 热 敏电阻化学稳定性差、测量范围小、但是灵敏度好。 旭报蝶恍碾竞径革裂台慌少闷找韶快然弃挚滥轻软乌佰招竟旅稚干孺辩峪传感器及其工作原理笔记传感器及其工作原理笔记 1)材料: 2)工作原理图 N M F B E I UH 霍尔元件工作原理图 3)霍尔电压(推导) d--薄片厚度 K--霍尔系数其大小与元件的材料有关。 霍尔元件能够把___________这个磁学量转换为____这个电学量 磁感应强度 电压 3、霍尔元件 半导体 如:砷化铟 乐嫂矢要沉米物羊窘痊腑焦辑陀踢斤嗅啦著粥珊冬夷逝擎惧佃毯鼓我睦可传感器及其工作原理笔记传感器及其工作原理笔记 【例3】霍尔效应:有电流 I 流过长方体金属块,金属块高度为d,宽为b,有一磁感应强度为B的匀强磁场垂直于纸面向里,试问金属块前、后表面哪面电势高?电势差是多少? 解;定向移动的电子: 金属电流: 则:霍尔电压 伪哺巢仅骏的雇戏吟强魁障擎刽免吩赏联衰侦铆峡虹滴振漓帖碾棺闪账玲传感器及其工作原理笔记传感器及其工作原理笔记 4.干簧管: 干簧管控制灯的熄灭 1.原理:开关作用 磁感应强度增强 两个簧片被磁化而接通 电路接通 2.干簧管继电器的应用: 实验电源的过载保护 (无需保险丝) 稗唯肋邮进铭壮岿昧铸价甩桩肇渡督渝创戎主吟康虹唬钻北酒的帚澈探祸传感器及其工作原理笔记传感器及其工作原理笔记 五、电容式传感器 力信息 电信息 定片 动片 θ (1)测定角度θ 改变S 炎舞贬祈蛛迅汾葛氰周黄堰洲要抠窑酞免酌路毁仰岛熔眷筒渺浪桐心烟滥传感器及其工作原理笔记传感器及其工作原理笔记 电介质 金属芯 导电液体 (2)测定液面高度h 改变S 针农狄掖煎洁迄裴狈唾裔砌耍嘱千李匪拙脱蔑沼隅骆译片截填姆管揩迄确传感器及其工作原理笔记传感器及其工作原理笔记 待测压力F 固定电极 可动电极 (3)测定压力F 改变d 佳矛殖找析示徐龙侗咎晚绰真唱茨湖暂龙鸿崖俄秧洞辽匪峙钳男拉返答滥传感器及其工作原理笔记传感器及其工作原理笔记传感器及其工作原理ppt:2020 2021学年高中物理第六章传感器1传感器及其工作原理1课件新人教版选修3 2.ppt  第3张

传感器及其工作原理ppt:光敏电阻传感器及其工作原理.ppt

2003-10-18 光敏电阻的光谱特性与光敏电阻的材料有关。硫化铅光敏电阻在较宽的光谱范围内均有较高的灵敏度,峰值在红外区域;硫化镉、硒化镉的峰值在可见光区域。 在选用光敏电阻时,应把光敏电阻的材料和光源的种类结合起来考虑。 硫化镉:可见光;照度计探头 硫化铅:近、中红外;火焰探测器探头 热敏电阻:半导体材料,具有体积小、反应快、使用方便等优点。 正温度系数Positive Temperature Coefficient 热敏电阻器的电阻值会随着温度的增高而电阻值增大。 Z 表示正温度系数。 负温度系数热敏电阻器的电阻值会随着温度的增高而电阻值减小。 F 表示负温度系数。 陶瓷PTC热敏电阻是以钛酸钡为基,掺杂其它的多晶陶瓷材料制造的,具有较低的电阻及半导特性.通过有目的的掺杂一种化学价较高的材料作为晶体的点阵元来达到的: 在晶格中钡离子或钛酸盐离子的一部分被较高价的离子所替代,因而得到了一定数量产生导电性的自由电子.对于PTC热敏电阻效应,也就是电阻值阶跃增高的原因,在于材料组织是由许多小的微晶构成的,在晶粒的界面上,即所谓的晶粒边界(晶界)上形成势垒,阻碍电子越界进入到相邻区域中去,因此而产生高的电阻. 这种效应在温度低时被抵消: 在晶界上高的介电常数和自发的极化强度在低温时阻碍了势垒的形成并使电子可以自由地流动.而这种效应在高温时,介电常数和极化强度大幅度地降低,导致势垒及电阻大幅度地增高,呈现出强烈的PTC效应. 自1950年荷兰菲力浦公司的海曼等人发现BaTiO3系陶瓷半导化后可获得正温度系数(PTC)特性以来,人们对它的了解越来越深刻。与此同时,在其应用方面也正日益广泛,渗透到日常生活、工农业技术、军事科学、通讯、宇航等各个领域,且正处于上升时期,大有一发不可收拾之势。   用电阻随温度而变的热敏陶瓷制造的温度传感器,用它测量温度,比其他方法测温响应快、精度高,微型温度传感器比一粒芝麻还小,用这类传感器做成的体温计,几秒内即可测出人的体温。这类用热敏陶瓷制造的测温仪表种类繁多,不仅在工农业生产的温度测控中大显身手,而且人们家中的空调机、电冰箱中的自动控温也都离不了它们。   利用PTC陶瓷既发热又控温的特性,可以制造许多家用电热电器,如暖风机、卷发器、暖脚器、手炉等等。近年,人们将半导体陶瓷材料涂复在玻璃、陶瓷、搪瓷等器皿上,通电发热用来制造电热壶、电火锅、电热水器等,与用电热丝作发热体的同类电热器相比,这类膜状发热体具有加热面积大、温度均匀、加热快速、安全无明火和能节电20~30%等优点。 PTC热敏电阻在电路控制及传感器中的应用   过热保护电路、孵育箱、电风扇、彩卷冲洗、开水壶、电热水器、电热毯、日光灯、节能灯、电池冲电、取暖器、* PTC热敏电阻在电热器具中的应用:   暖风机、暖房机、干燥机(柜)、滚筒干衣机、干手器、吹风机、卷发器、蒸汽美容器、电饭煲、驱蚊器、暖手器、干鞋器、高压锅、消毒柜、煤油气化炉、电熨斗、电烙铁、塑料焊枪、封口机 * PTC热敏电阻在汽车中的应用:   电器过载保护装置、混合加热器、低温启动加热器、燃料加热器、蜂窝状加热器、燃油液位指示器、发动机冷却水温度检测表 原理:洛伦兹力=电场力。。。。 霍尔器件分为: 霍尔元件 和 霍尔集成电路 两大类, 前者是一个简单的霍尔片,产生的电压几微伏/高斯; 使用时常常需要将获得的霍尔电压进行放大。后者将霍尔片和它的信号处理电路集成在同一个芯片上 应用: 按被检测的对象的性质可将它们的应用分为:直接应用和间接应用。前者是直接检测出受检测对象本身的磁场或磁特性,后者是检测受检对象上人为设置的磁场,用这个磁场来作被检测的信息的载体,通过它,将许多非电、非磁的物理量例如力、力矩、压力、应力、位置、位移、速度、加速度、角度、角速度、转数、转速以及工作状态发生变化的时间等,转变成电量来进行检测和控制 车速表,流量计, 霍尔位移传感器,霍尔加速度传感器 指这样一类元件:它能感受诸如力、温度、光、声、化学成分等非电学量,并能把它们转换成电压、电流等电学量,或转换为电路的通断,从而能方便地进行测量、传输、处理和控制。 --- 教材定义 IEC:International Electrotechnical Committee 是测量系统中的一种前置部件,它将输入变量转换成可供测量的信号。---国际电工委员会(IEC) 当齿轮位于图中(a) 时,穿过霍尔元件的磁力线分散,磁场相对较弱; 当齿轮位于图中(b) 时,穿过霍尔元件的磁力线集中,磁场相对较强。 齿轮转动时,使得穿过霍尔元件的磁力线密度发生变化,因而引起霍尔电压的变化, 霍尔传感器不仅广泛应用于ABS轮速检

传感器及其工作原理ppt:计算机的工作原理是什么样的?

这个问题可能有些太泛了。就是从完全不懂计算机的人的视角来看,为什么计算机能读懂0和1并处理数据呢?课本提过打孔的一个模型,现代计算机同理吗?数据又是怎么组成图画,怎么反馈的呢?其中的载体和运作过程,能否用形象的说法表达出来?
鲲鹏是一个处理器, 泰山服务器。 可以去huawei 微认证。 我很好奇cs61c是怎么讲的
上课多讲原理, 不要讲具体哪个到哪个到哪个, pc+4 , 大作业: 深度学习加速器, mac 运算, 两个矩阵相乘 128*128的矩阵, 做一个五步流水线,有cache就可以了, 网上都有, 自己有优化给分更高。 chipyard生成 cpu, 讲清楚
class1
冯诺依曼架构,
时钟的频率 服务器3ghz ,手机1。5ghz ,05年之后很难提高了。
再变小, voltage 和current 不缩小了, 因为阈值电压不能变, 不然漏电流太大了。 频率不能变小,互联delay的原因吗?
dram, latency 十年下降33%, 非常慢。带宽增长快于latency。 硬盘密度每年翻倍。 memory wall, 存储器速度跟不上cpu的速度。
距离比较 register 在脑子里 1min cache在 room 2min main memory 在上海, 要1。5hr 硬盘 disk要 2year
1989年 first intel uproc with a cache on chip 2001 2-level cache
2021 four level cache
ilp wall , mains instructions parallelism . there is increasing difficulty to find enough parallelism.
task-level p :tlp data-level p : dlp 3.8x ilp: instrctns combined into groups loop unrooling and out-of-order execution 2.3x cache blocking :2.5x thread level parallelism 14x accelerators :100x gpu: 240 cores .
i fetch ->i decode -> op fetch -> exe - > result stro-> next in.
dependability via redundancy . It is used in datacenters, disk, or memory bits (ecc error correcting code)
huawei ascend 310 ,910
cpu性能
CPU执行时间=cpu 时钟周期数 /时钟频率 CPU执行时间=cpu 时钟周期数 x 一个时钟周期需要多少时间
指令的性能
CPI是什么? 是执行程序时每条指令用的平均时钟周期 CPI 就是(时间/时钟周期)/指令数 $一个程序用的CPU周期数=指令数 * CPI$ the nature of each inst(clock cycles each inst) and the quality $$ exe time=clock cycle time * a number of ints * avg CPI $$ CPU执行时间=指令数 x CPI x 一个时钟周期需要多少时间 CPU执行时间=指令数 x CPI /时钟频率 measures: response time, throughput the two measures are usually linked 1. a faster processor 2. some policies improve throughput but worse response time 3.
第二节课
无符号和有符号 expansion和 truncate Tadd溢出 算术右移:数字向右移动,左边补符号位。 逻辑右移:数字向右移动,左边补0。 算术左移:数字向左移动,右边补0。 逻辑左移:数字向左移动,右边补0。
加和乘 无符号移位 addition mod 2^w multiplication : 也是 mod 2^w 有符号移位 addition : 放在range中 multiplication : 也是 mod 2^w
20年题目: int 到 float 有精度损失 long 到 double 有精度损失 long 到 float 有精度损失 int到double没有精度损失
float有效位是尾数M加1也就是24位,阶码E只是我们规范科学计数法记录指数的,但int有效位是32位,float实际有效位比int少. 一个是有效数字丢失,int转float有可能丢失末尾的几位有效数字,这个是允许的,既然用户写了这个代码,说明他接受这种小范围误差
另一个是目标类型可能完全无法表示数据,比如float存放一个1e30,转为int是无法表示的,因为int最多21亿多,这个就丢得没影了,所以会告诉你有可能出问题.
0.2无法被精确表示成二进制小数,这也是为什么十进制小数转换成二进制小数时会出现精度损失的情况。
二进制
有符号和无符号 的关系 19页-27页.有符号就是二进制补码. 有符号和无符号 在C语言中28页 sign 拓展 29 - 32 , 截断的法则.
无符号的加 , 无符号数, overflow 丢弃吗? 二进制补码, overflow 后丢弃吗? 41页
42页, 乘法 无符号乘法 除法 49页 算数规则 53页
fractional 二进制 58页 浮点数 特殊的数 69页
作业一:
怎么算总执行时间? 指令*指令各自的CPI / 时钟频率. 多核, 有的指令如arith,load,store花费cycles会更少, 有的指令如br会不会加速.
核越多, 一个指令CPI增加的impact就越小. 比较时间的话, 时钟频率不变就看总cycles即可.
无符号8bit, 最大为1111 1111 , +1 为 0000 0000 就溢出了. 不能表示-1 bias 就是可以表示负数, -127到128 二进制complement , 第一位为符号位, 最大127, 最小-128
怎么用移位和加法实现乘除法 3x=x<<1 +x 7x=x <<3 + (–x) Because integer have 32bits X/3=x<<2 + x<< 4 + … + x<<30 第三节课riscv 指令集 2015年risc-v 实现了 chisel /rtl cpu: rocket chip 这两个也是21年春夏大作业的实现工具和参考cpu 寄存器 number of risc-v registers: risc-v 有32个 registers,x0 到 x31 each register is 32bits wide x0 is special , always holds value 0 x8,x9 , x18- 27 是saved register x28 - 31是临时变量 t3- 6 x10-x11是 a0 -1 ,可以返回值 x12- 17 是 a2- 7 函数参数 s0 s1 是需要保存的 a0 a1是临时变量不需要保存. opcode, operands register速度是1, dram到alu传输数据速度大约是。 地址指过去是bytes, 不是指一个words。 取 lw x10 , 12(x13) a【10】=h+ a【3】 存 sw x10 , 40(x13) 取word 中一个bytes: lb x10,3(x11) lbu 提取出来一个bytes, 把前面拓展0 ; 不需要sbu 指令, 寄存器需要整个32位来计算, 但是存储可以直接放一个bytes。 比如 addi x11,x0, 0x3f5 ; //寄存器取到不够32bits的, 前面会补 0 ; sw x11,0(x5) lb x11,1(x5) // 取出的不是f而是3 因为前面有一个byte 0。 slli 左移 srli右移 这两个是左右补0 srai 右移动。 会补 符号位,和除法不太一样, 对于odd negative numbers 会出错。 - add x10,x11 , 4(x12) 是有效的。× 最多偏移 3bytes -imm must be multiple of 4 for lw x10, imm(x10 ) to be valid。 不对的,imm确实要4的倍数, 但是不能把 x10的地址写到 x10中 。 ? ORANGE: The callee can use temporary registers (ti) without saving and restoring them 对 ? YELLOW: The caller can rely on save registers (si) without fear of callee changing them 对 静态data text reserved risc v的六类, risbuj j jump u 特殊的 虽然把指令分成 不同的field, 但是还是尽量在对齐。 对齐了需要的硬件资源少。 r类型 why arenot opcode and funct 7 and funct 3 a single 17 bit field? 第五章ppt11页 比如 add rs2 rs1 add rd reg reg op i类型 only one field is different from r eg。 imm rs1 add rd op-imm 还可以shift , lower 5bits 可以 用来移位。 也可以load, eg lw x14 , 8 (x2) imm都省略了最后一个0 比如跳转 jal ra, foo|_____0x14 是相对距离的一半. s format sw x14 , 8(x2) offset rs2 rs1 sw offset , store 目的是寄存器先对齐, because reg use more frequently。 br instruction usage branches typically used for loops loops are generally small ,《 50 function calls and unconditional jumps handled with jump instructions。 pc relative addressing can specific 2E11 scaling br offset 压缩指令到16bits,也就是2bytes。 scales the br offset by 2bytes imm don‘t have 0, 只有 12 到1。 ppt 31页 可以看到。 因为最后一位永远是0 imm represent values -4096 到 4094。 br offset=4*32bit=16bytes pc addressing lui load upper imm, which can create long imm auipc add upper imm to pc 。 offset[4:1|11]这是一个很奇怪的组成, 连续的bit 不是直接表示, 而是拼凑起来的. 可以看greencard 的拼凑方法. 跳转 RISC-V uses jal to invoke a function and jr to return from a function对 jal saves PC+1 in ra 错, 是 pc +4 jal: 跳转和返回,是 Implementation x[rd]=pc+4; pc +=sext(offset) Single instruction to jump and save return address到rd : jump and link (jal) Before: 1008 addi ra,zero,1016 #ra= j sum #goto sum After: 1008 jal sum # ra=1012,goto sum ret=jr ra jalr JALR rd, rs, immediate – Writes PC+4 to rd (return address) – Sets PC=rs + immediate 一个寄存器再加偏移 – Uses same immediate as arithmetic and loads ? no multiplication by 2 bytes 做了两个事情, 一个是保存ra, 一个是 ret=jr ra=jalr x 0 , ra , 0 Call function at any 32-bit absolute address lui x1, jalr ra, x1, Jump PC-relative with 32-bit offset auipc x1, jalr x0, x1, (1)汇编程序转换的结果是一个o文件。 o文件包含目标文件标头,该标头用于描述目标文件中其他文件的大小和位置。 文本段包含机器代码,而静态数据段包含程序中使用的程序。 将程序加载到内存时,重定位信息被写入指令和数据的地址中(相对地址),符号表包含一些外部参数的未定义标签,并且调试信息用于描述C和机器代码之间的编译。 (2)通过链接器实现可执行文件。 这种可执行文件的主要工作是为代码和数据分配实存储器地址(绝对地址)。 将多个目标文件链接在一起。 逻辑左移和算术左移的区别? 逻辑左移=算数左移,右边统一添0 逻辑右移,左边统一添0 算数右移,左边添加的数和符号有关 Clock input (CLK) – Clk input is a factor ONLY during write operation – During read operation, behaves as a combinational logic block: ? RA or RB valid → busA or busB valid after “access time.” cache coherence 写入单个内存空间的顺序, memory consistency 内存读写都要consistency, 读操作需要返回最新写入memory的值 C 和riscv 小测:第一题 <1>从静态存储区域分配.
内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在.例如全局变量、static变量.
<2>在栈上创建
在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放.栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限. <3>从堆上分配,亦称动态内存分配.
程序在运行的时候用malloc或new申请任意多少的内存,程序员自己负责在何时用free或delete释放内存.动态内存的生存期由用户决定,使用非常灵活,但问题也最多. calloc是啥?colloc与malloc类似,但是主要的区别是存储在已分配的内存空间中的值默认为0,使用malloc时,已分配的内存中可以是任意的值.用malloc分配存储空间时,必须由我们计算需要的字节数。
//如果想要分配5个int型的空间,那就是说需要5*sizeof(int)的内存空间:
int * ip_a;
ip_a = (int*)malloc( sizeof (int) * 5 );
//而用calloc就不需要这么计算了,直接:
ip_a = ( int* )calloc( 5, sizeof(int) );
这样,就分配了相应的空间,而他们之间最大的区别就是:用malloc只分配空间不初始化,也就是依然保留着这段内存里的数据,而calloc则进行了初始化,calloc分配的空间全部初始化为0,这样就避免了可能的一些数据错误。 xori 0xFFFF 就是 1变为0 , 0变为1, 就是取反码的一个办法 答案乘二不用移位运算, 而是用add a0,a0,a0.
作业2: 没有bgt, slt 存到t0 , 然后beq 就可以实现 bgt的作用
作业3: 哪个指令是关键路径? 一般是load/store , 因为 访问内存, 写寄存器都要. 取指令, 译码, exe 这三步是大部分指令都要的. 而访问内存很多指令不用. 最快时钟频率, 就是 1/ 关键路径的时间 为什么single cycle cpu慢? 指令不会并行化。 每条指令都有相同的时钟周期时间,所以我们必须计时到最慢的指令。 这条指令通常是lw. 2的n次个输入, 2的n+1次个logic gates
五步流水线
增加寄存器 为啥要加寄存器? 当我们对数据路径进行流水线处理时,需要在每个时钟周期传递每个阶段的值。 流水线中的每个阶段仅对一小部分值进行操作,但是这些值必须相对于当前正在处理的指令是正确的。 假设我们以负载字(lw)为例:如果它处于EX阶段,则EX阶段应该看起来像单周期数据路径的快照。 rs1,rs2,instant和PC值的值应好像lw是整个路径中的唯一指令。 这也包括控制逻辑:在每个阶段传递指令,为感兴趣的阶段生成适当的控制信号,并且该阶段可以正确执行.
pc+4 要重新计算。 作业问: 为啥要重新计算? ppt上说是因为We add +4 to the PC again in the memory stage so we don't need to pass both PC and PC+4 along the whole pipeline 就是流水线中间需要pc 但是最后写回阶段需要的是pc+4
为什么我们需要多次将指令保存在寄存器中? 我们需要将指令多次保存在寄存器中,因为每个流水线级都需要为该级当前的指令接收正确的控制信号。
指令译码 是指将存储器中取出的指令进行翻译的过程。经过译码之后得到指令需要的操作数寄存器索引,可以使用此索引从通用寄存器组(Register File,Regfile)中将操作数读出。 作业里也叫reg周期.
冒险
结构冒险 structural hazard, 两个指令竞争single physical resource. 比如指令存储器和数据存储器不分开的话, 就可能两个指令同时竞争一个存储器. 数据冒险 ,数据被下一个inst用了. 可以用passby 旁路来解决数据冒险.
控制冒险,地址被下一个inst 用了
分支指令到mem级才能决定是否执行分支, 后面三个指令可能会在跳转之前执行. 解决方法: 1. stall 停转Solution 1: Stalling Stalls reduce performance – But stalls are required to get correct results ? Compiler can arrange code to avoid hazards and stalls – Requires knowledge of the pipeline structure 优化数据流, 哪些先哪些后 2. 分支预测, 一种方法是预测分支不发生, 这样流水线可以全速执行, 甚至可以动态预测, 根据本次预测的结果来调整下一次的预测行为. 历史记录足够多时, 正确率可以达到90%, 预测错误时, 让后面的指令执行不生效, 在正确的分支地址处重新开始启动流水线. 3. 还有一种延迟分支, 比如用一些不影响分支的指令来隐藏分支延迟, 但是只有分支延迟较短的时候延迟分支才有效, 对更长的延迟分支, 一般都使用硬件分支预测器. Problem: Instruction depends on results from previous instruction
Forwarding: grab operand from pipeline stage, rather than register file Use result when it is computed – Don’t wait for it to be stored in a register – Requires extra connections in the datapath 需要判断什么时候把数据拿过来。看上一条的dest和下一条的源地址是否一样。
ppt64页。 使用旁路bypass不是万能的 lw后马上and, 就必须要stall一个周期 所以用 low slot, 在lw时插入别的不需要用lw result的指令。reorder code to avoid use of load results in the next instruction。
分支预测br 提前取入, 如果是错的, 用nop 把取入的给flush出cpu Reducing Branch Penalties ?cycles Every taken branch in simple pipeline costs 2 dead to improve performance, use “branch prediction” to guess which way branch will go earlier in pipeline only flush pipeline if branch prediction was incorrect
Deeper pipeline: 5=> 10=> 15 stages ? Less work per stage shorter clock cycle ? But more potential for hazards (CPI > 1)
为什么不dispatched 每个cycle Full bypassing may be too expensive to implement Loads have two-cycle latency Jumps/Conditional branches may cause bubbles
In Conclusion
Pipelining increases throughput吞吐量 by overlapping execution of multiple instructions ?All pipeline stages have the same duration – Choose a partition that accommodates this constraintHazards potentially limit performance – Maximizing performance requires programmer/compiler assistance – E.g. Load and Branch delay slots 三种 冒险 结构性可以用 增加资源来解决 数据- 》 旁路 ,插入bubble 控制 -》 flush ,清空流水线 Structural Hazards – Solution 1: Instructions take it in turns to use resource – Solution 2: Add more hardware to machine ? Regfile Structural Hazards: 2 read ports and 1 write port ? Memory Structural Hazards: dedicated caches ? Data Hazards – Register access: write-then-read – ALU results: stalling (interlocking) and forwarding (bypassing) – Load data hazards: stalling and rescheduling ? Control Hazards – Kill instructions – Branch prediction
Superscalar processors use multiple execution units for additional instruction-level parallelism – Performance benefit highly code dependent
不同指令集还有更复杂的冲突raw waw write after write
deeper pipelines:可能要插入多个reg
中断
加入一个 优先 request An I/O device requests attention by asserting one of the prioritized interrupt request lines ? – It saves the PC of instruction Ii – It stops the current program at instruction Ii instructions up to Ii-1 (precise interrupt) When the processor decides to process the interrupt, completing all the in a special register (EPC) – It disables interrupts and transfers control to a designated interrupt handler running in supervisor mode
怎么处理异常?
Speculating on Exceptions ? Prediction mechanism– Exceptions are rare, so simply predicting no exceptions is very accurate! ?Check prediction mechanism– Exceptions detected at end of the instruction execution pipeline, special hardware for various exception types - Recovery mechanism– Only write architectural state at commit point, so can throw away partially executed instructions after exception - Launch exception handler after flushing pipeline bypassing allows use of uncommitted instruction results by following instructions
10 memory
芯片面积过大, 有一个地方坏了就要丢掉 ,良品率低 gpu带宽几百个g。靠什么方法提升bandwidth?
全相连 增加了hit时间,减小了miss rate 组相连
直接相连
分析cache 1 access time 2capacity总容量 3 block size 4 替换策略 , lfu, lru 5 associativity 6 unified 数据类型 When a miss occurs, which way’s block selected for replacement? – Least Recently Used (LRU): one that has been unused the longest (principle of temporal locality) ? Must track when each way’s block was used relative to other blocks in the set ? For 2-way SA $, one bit per set → set to 1 when a block is referenced; reset the other way’s bit (i.e., “last used”)
替换策略
– Hardware replacement pointer points to one cache entry – Whenever access is made to the entry the pointer points to: ? Move the pointer to the next entry Replacement Pointer – Otherwise: do not move the pointer – (example of “not-most-recently used” replacement policy) Random Least-Recently Used (LRU) – LRU cache state must be updated on every access – true implementation only feasible for small sets (2-way) – pseudo-LRU binary tree often used for 4-8 way first-In, First-Out (FIFO) a.k.a. Round-Robin – used in highly associative cachesNot-Most-Recently Used (NMRU)– FIFO with an exception for most-recently-used block or blocks
cache改进的影响
增加 associativity:访问时间hit 时间增加, miss 时间减少。
(FIFO) replacement policy. 最早引入的页面将被替换,FIFO 策略将以循环方式(即循环)替换**页面.使用插入时间戳选择受害者。如果没有空,则最古老的条目是受害的,无论它被触摸的次数如何。
global miss rates
local miss rates:
amat: 命中时间+ miss rate 乘 miss penalty
amat: l1hit时间+ l1 miss rate 乘 ( l2 hit time + l2 local miss rate 乘 l2miss penalty)
| technique | hit time | miss penalty | miss rate | 硬件复杂度 | | ---- | ---- | ---- | ---- | ---- | | blocksize变大 | | 更慢取 | 减少 | 0 | | cache size变大 | 更慢 | | 减少 | 1 | | 更高associativity | 更慢 | | 减少 | 1 | | 多级cache | | 变小 | | 2 | always减少miss rate是错的. 也不一定能够减少AMAT
Reducing Write Hit Time
Problem: Writes take two cycles in-memory stage, one cycle for tag check plus one cycle for data write if hitSolutions: ?one cycle, restore old value after tag miss ?enabled if hit ?Design data RAM that can perform read and write in Fully-associative (CAM Tag) caches: Word line only Pipelined writes: Hold write data for a store in single buffer ahead of cache, write cache data during next store’s tag check
要是读的数据在write buffer里怎么办? Processor is not stalled on writes, and read misses can go ahead of writing to main memory Problem: Write buffer may hold the updated value of location needed by a read miss Simple solution: on a read miss, wait for the write buffer to go empty等他写完
Faster solution: Check to write buffer addresses against reading miss addresses, if no match, allow read miss to go ahead of writes, else, return value in write buffer 主动去找
cache miss的三种类型3C 1. compulsory 冷启动, 第一次访问 2. capacity 因为cache太小不能容纳所有需要的数据 3. conflict 多个内存地址映射到同一个cache set.
Increasing Cache Bandwidth with NonBlocking Caches
10 memory IV
cache hit的时候: write through, 同时写到cache和 memory ,
write back 只写到cache, evict的时候再写到memory, 控制逻辑复杂,
cache miss的时候: no write allocate : 直接写到内存中 write allocate : cache miss的时候,把要写的地址所在的块先从main memory调入cache中,然后写cache,这种办法叫做write allocate policy。通常和write back 一起使用.
prefetch 预先读取, 预测下面要读的数据。 软件实现,硬件实现. 编译器优化。
告诉软件不用放在cache, no allocate 指令或者页表bit
大型矩阵切块, 可以塞cache里。
11章并行
为什么要并行? 1 时钟4ghz上不去了 2 并行
Approaches to Parallelism – SISD, SIMD, MIMD (next lecture) SIMD – One instruction operates on multiple operands simultaneously Example: matrix multiplication – Floating point heavy → exploit Moore’s law to make fast Amdahl’s Law:
– Serial sections limit speedup – Cache不够大 ? Blocking – Hazards
解决方法: ? Loop unrolling
rocket in order 单发射
计组2
华为云 , 有一个并行计算的作业, 然后可以把自己的放上去跑一跑。homework9就是简单的并行计算作业。
并行: 任务级并行或进程级并行: 每个处理器上运行不同程序. parallel processing program: 一个程序同时运行在多个处理器上. 封装在不同服务器上的多个微处理器组成的集群,作用等同于一个大型的多个处理器计算机. 11章第二个ppt37 超线程hyperthreading simultaneous multithreading Hyperthreading: – Both threads can be active simultaneously
Logical threads
– ≈ 1% more hardware开销 ≈ 10% (20%?) better performance ? Separate registers ? Share datapath, ALU(s), caches
Multicore
–=> Duplicate Processors – ≈50% more hardware, ≈2X better performance?(小于两倍) Modern machines do both – Multiple cores with multiple threads per core
Why So Many Parallel Programming Languages? 1 没有通用的解决方案, 专用的问题用专门的处理, 2 cuda解决矩阵运算 ,网页服务器 并发又不一样。
simd
mimd
openmp
只在shared memory 能用。 #pragma omp parallel for #pragma omp parallel for private(x) #pragma omp parallel reduction(+:sum) reduction子句为变量指定一个操作符,每个线程都会创建reduction变量的私有拷贝,在OpenMP区域结束处,将使用各个线程的私有拷贝的值通过制定的操作符进行迭代运算,并赋值给原来的变量。 #pragma omp critical - CRITICAL指令指定一块同一时间只能被一条线程执行的代码区域.- 如果一条线程正在一个CRITICAL区域执行而另一个线程到达这个区域,并企图执行,那么它将会被阻塞,直到第一个线程离开这个区域.
reduction有操作和变量 主线程创建额外线程,每个有单独的execution context, 声明在loop外的变量被共享
fork -》并行处理- 》 join 是软件线程
Amdahl’s Law 阿姆达尔这个模型 定义了固定负载下,某个算法的并行实现相对串行实现的加速比。例如,某个算法有12%的操作是可以并行执行的,而剩下的88%的操作不能并行,那么阿姆达尔定律声明,最大加速比是1(1-0.12)=1.136 amo: atomic memory operation 1 共享内存 用同一个虚拟地址 2 信号 编程比较难 新的总线用 点对点链接。 只有一个master 可以initiate 一个transaction 驱动总线 总线在cache和内存之间。
cache coherence
snoopy cache 1983年提出, 监视总线然后修改状态。 是针对write back的 write 时所有其他cache 都无效化 read, 内存读之前, 如果别的cache有 dirty,先执行写回,把原来不更新的数据 驱逐出去写回到内存中。然后再读内存。
moesi 协议
shared, modified, exclusive, owner,invalid owner , modified : 内存 out of date , exclusive, 内存 up to date , Scaling Snoopy/Broadcast Coherence 用更宽的总线,
Scalable Approach: Directories
每个memory 有associated 字典信息 – on a miss, find directory entry, look it up, and communicate only with the nodes that have copies if necessary
Directory Structure
Directory Overhead
Solution: Cached Directories 维持active cache 即可,
false sharing
两个处理器,更新同一行, 不断write然后发送 invalid 给对方
怎么防止?
Fourth “C” of Cache Misses!
Coherence Missesfalse sharing
要求会写,是true sharing 还是 false sharing 还是hit。 考试可能考。
生产者和消费者 不同步。 消费者spin 等待。 利用store buffer 解决
TSO is the strongest memory model in common use total store order
在写失效(write miss)时,即所要写的地址不在cache中,该怎么办呢?一种办法就是把要写的内容直接写回main memory,这种办法叫做no write allocate policy;另一种办法就是把要写的地址所在的块先从main memory调入cache中,然后写cache,这种办法叫做write allocate policy。 这两种写策略都是针对写命中(write hit)情况而言的:write through是既写cache也写main memory
directory cache protocol
C-invalid=nothing C-shared=Sh C-modified=EX C-transient=pending , 比如 site 刚发送了一个request, 但是没有收到对应的protocol reply
复杂流水线
ooo 乱序执行 乱序执行。有些时候执行顺序是A,B,C,D。但B的执行是依赖A的结果的,这时如果A没有执行完,B就没法执行,此时,CPU识别出指令C先执行也没有问题,就把C放到另一个ALU上去执行。 raw read after write 一些指令没有数据依赖,但是存在f0的反相关,也就是后面dst是f0,前面src是f0.所以只需要使用寄存器重命名,只留下必须严格按序执行的RAW冲突。
用一个数据结构来 保存 entry scoreboard for in order issue
看能不能发射指令。
ROB reorder buffer Reorder Buffer Management Renaming and Out-of-order execution 不常用 原因 异常不精确! 仅对一小类程序有效。 内存延迟是一个大问题
renaming out of order issue Out-of-Order Fades into Background
乱序执行的问题
后来解决了几个问题, 乱序执行又开始火热 精确trap 精确trap使调试和OS代码复杂化 注意,精确的中断相对容易提供 分支预测 受控制危险限制的可利用指令级并行度(ILP)数量 此外,新技术中更简单的机器设计击败了旧技术中的复杂机器大优势 在一个芯片上适合处理器和高速缓存微处理器的时代已经达到每周1%的性能扩展 精确的中断难以高速实现-要在较早的指令完成异常检查之前开始执行较新的指令
按顺序提取并解码到指令重排序 inorder的 缓冲区中的指令执行是乱序的(completion乱序完成) 提交(写回到架构状态,即regfile和内存)是in order Renaming Table Control-Flow Penalty 现代处理器在下一个PC计算和分支resolution之间可能有> 10个流水线级!
Reducing Control-Flow Penalty
软件解决方案 消除分支-循环展开增加运行时间减少解析时间-指令调度 尽早计算分支条件(值有限,因为分支通常在代码的关键路径中) 硬件解决方案 查找其他事情(delay slots) 具有有用工作的管道气泡(需要软件合作)–快速看到收益递减 推测,即分支预测 推测执行分支以外的指令准确性方面的许多进步已得到广泛应用
分支预测
动机:分支惩罚限制了深度流水线处理器的性能现代分支预测器具有较高的准确性(> 95%),并且可以大大降低分支惩罚。 所需的硬件支持:预测结构:分支历史表,分支目标缓冲区等。 错误预测的恢复机制:将结果计算与 commit 分开, Kill后面的指令,然后将管道中的分支还原到该分支
动态分支预测
时间相关性 分支的解析方式可以很好地预测下一次执行时的解析方式。空间相关性 多个分支可以以高度关联的方式(首选的执行路径)进行解析。4 对于每个分支,记住最后一个分支去向 循环关闭后向分支有问题,因为每次循环执行时都会发生两个错误的预测,第一个迭代预测未使用循环后向分支(上次退出了循环),最后一次迭代预测了循环后向分支( 上次循环继续)
假设每条指令2个BP位,连续两次错误后更改预测!
Branch History Table (BHT) 4K-entry BHT, 2 bits/entry, ~80-90% correct predictions 分支预测的另一种方法是在分支的两个方向上进行推测性执行 资源需求与并发的推测性执行的数量成正比,而在分支的两个方向上进行推测性执行时, 只有一半的资源从事有用的工作,分支预测所花费的资源少于推测性执行 两种路径的选择借助准确的分支预测, 将所有资源专用于预测的方向更具成本效益! BHT的缺点: 仅预测分支方向。 因此,在确定分支目标之前,无法重定向获取流。
Branch Target Buffer (BTB)
BTB条目entries比BHT昂贵得多,但可以在管道pipeline的较早阶段重定向取回并可以加速间接分支(JR) BHT可以容纳更多条目,并且更准确 我们可以让BHT in later pipeline stage corrects when BTB misses a predicted taken branch
Dynamic function call (jump to run-time function address) 如果通常调用相同的函数(例如,在C ++编程中,当对象在虚拟函数调用中具有相同类型时),BTB效果很好
Return Stack in Pipeline
看不懂 How to use return stack (RS) in deep fetch pipeline? Only know if subroutine call/return at decode Can remember whether PC is subroutine call/return using BTB-like structure Instead of target-PC, just store push/pop bit
乱序和顺序比较
inorder 推测性获取而不是推测性执行-分支在以后的指令完成之前解析, 将完成的值保存在旁路网络中,直到提交为止
outof order 推测执行,在后续指令完成后解析分支 完成值保存在ROB或统一物理寄存器文件中的重命名寄存器中,直到提交 两种类型的机器都可以在前端访存管线中使用相同的分支预测变量,并且每个周期都可以执行多个指令,共同使用两种设计中的10-30个管线阶段
InO vs. OoO Mispredict Recovery 按顺序执行?进行设计,以使分支后没有发出的指令可以在分支解决之前回写。 在错误的分支后面杀死流水线中的所有指令 乱序执行?在分支解析之前,可以按照程序顺序在分支之后完成多条指令. 一个简单的解决方案是像精确traps一样处理 问题?
ROB中可以有多个未解决的分支 可以通过杀死ROB中错误预测的分支之后的所有指令来乱序解决分支 MIPS R10K使用四个掩码位来标记取决于最多四个推测分支的指令 掩码位被清除as branch resolves,并重新用于下一个分支
Rename Table Recovery
Unified Physical Register File 在解码期间将所有架构寄存器重命名为一个物理寄存器文件,不读取任何寄存器值从单个统一寄存器文件读取和写入功能单元,并在执行中保留已提交和临时的寄存器。提交仅更新架构寄存器到物理寄存器的映射,不进行数据移动 Lifetime of Physical Registers 物理regfile保存已提交和推测的值 物理寄存器与ROB条目解耦(ROB中没有数据
Repairing Rename at Traps
Superscalar Register Renaming 解码期间,分配给新物理目标寄存器的指令 将源操作数重命名为具有最新值的物理寄存器。 执行单元仅看到物理寄存器号
Separate Issue Window from ROB 指令窗口中包含已解码和重命名但尚未发出执行的指令。 具有寄存器标签和状态位,以及指向ROB条目的指针。 Reorder buffer used to hold exception information for commit. (ROB,Reorder Buffer):重排序缓存。基于硬件的推测:必须把指令变序执行与实际结束分离开来,成为两步实现; 1、变序执行是动态调度的需要,必须把指令的执行结果,通过旁路方法,随时提供给其它指令使用; 2、按序结束是为了确保实现精确中断的需要(能确保恢复中断前的状态)。 ROB在指令完成操作之后直到交付之前这段时间里保存该指令的结果. 重排序缓冲区保存从完成到提交为止的寄存器结果, 在解码期间按程序顺序分配条目 缓冲区完成值和异常状态,直到按顺序提交点为止 依赖项可以在提交(旁路)之前使用已完成的值 每个条目都保存程序计数器,指令类型 ,目标寄存器说明符和值(如果有)以及异常状态(经常压缩信息以节省硬件) 内存重新排序 需要特殊的数据结构推测性存储地址和数据缓冲区推测性加载地址和数据缓冲区
Improving Instruction Fetch
speculative乱序机器的性能通常受指令获取带宽的限制, speculative执行可能比被误判的惩罚多获取2-3倍的指令,而错误预测的惩罚主要取决于重新填充指令窗口所花费的时间,这是非常麻烦的
整数代码每6-9条指令就有一个分支, 为避免瓶颈,在提高性能时必须在每个周期执行多个分支, 这意味着:预测每个周期多个分支,每个周期获取多个非连续块
fetching multiple basic blocks 需要多端口高速缓存:昂贵的交错:将会发生存储体冲突 合并多个块以馈入解码器会增加延迟,增加错误预测的代价并降低分支吞吐量
trace cache
关键思想:将多个不连续的基本块打包到一条连续的跟踪高速缓存行中一次访存会引入多个基本块,该跟踪高速缓存由起始地址和接下来的n个分支预测索引,在Intel Pentium-4处理器中用于保存解码的uops
load store queue design 在控制危险之后,通过内存造成的数据危险可能是超标量性能的下一个最重要的瓶颈。现代超标量使用非常复杂的负载存储重排序技术,以允许通过推测性地释放负载来减少有效的内存延迟。
inorder memory queue
按程序顺序执行所有加载和存储=> 加载和存储在完成所有先前的加载和存储执行之前不能离开ROB进行执行 仍然可以推测方式执行加载和存储,并且相对于其他指令而言是乱序的 需要一个结构处理内存排序...
猜想x4!=x2在知道存储地址之前执行加载 需要按程序顺序保存所有已完成但未提交的加载/存储地址 如果随后找到x4==x2,则squash load and following 指令=>错误的地址推测会造成较大的损失
memory instrction
解码期间将存储指令分为两部分:地址计算,存储地址数据移动,存储数据 在解码期间按程序顺序在内存缓冲区中分配空间存储指令:存储地址计算地址和存储缓冲区中的位置存储数据副本存储值 进入存储缓冲区存储地址和存储数据在发行窗口外独立执行仅存储提交到提交点的数据高速缓存的加载指令 加载指令:从窗口执行加载地址计算加载完成的有效地址搜索存储器缓冲区加载指令可能必须在内存中等待 较早的商店操作要解决的缓冲区
Issue Stage
完成阶段的回写“唤醒”一些指令,通过使它们的源操作数准备好 in issue window 在更多的推测机器中,可能会唤醒内存缓冲区中的等待负载 需要“选择”一些指令来发出 指令仲裁器选择准备好的指令子集 执行示例策略:随机、低位优先、最老优先、关键优先 从issue window读出并发送到执行的指令
Execute Stage
Read operands from physical register file and/or bypass network from other functional units Execute on functional unit Write result value to physical register file (or store buffer if store) Produce exception status, write to ROB Free slot in instruction window
commit stage
从重排序缓冲区中按顺序读取已完成的指令(可能需要等待下一条最旧的指令完成)如果引发异常的刷新流水线,跳转至异常处理程序, 否则,释放资源:free 物理寄存器, 最后一次写使用的同一体系结构寄存器中 free ROB slot free 内存ROBslot
project 相关资料, 复杂流水线 ppt 119页 rocket inorder,单发射。 boom 乱序的。 chisel 用scala写的, 不是高层次可综合的,
可以生成不同语言格式。 boom 流水线, 有单独的发射窗口 配置超标量,
测试就是 spirk , 一样面积, inorder 比 outorder core ? rob reorder buffer, 寄存器重命名表 issue window
riscv 很多是用于科研, 工业界用arm多,尤其是手机 riscv 也是为了低功耗 arm低功耗,成本和集成度也有优势。
鲲鹏处理器
鲲鹏用于服务器。
arm处理器体系结构
armV8-a的异常等级: el0 非特权application级,el1 linux kernel-os, el1-el3 是特权等级, el2异常登记提供了虚拟化支持hypervisor , el3 在安全和非安全两个安全状态切换。el3 secure monitor,可以起到物理屏障安全隔离作用。
arm 有1000个左右授权合作商, 购买架构授权的不超过20家, 中国有华为,飞腾获得架构授权 三种 授权登记 : 架构授权/ 处理器授权/ ip包授权
鲲鹏处理器 鲲鹏是soc, 支持 core 虚拟化, 内存虚拟化, 中断虚拟化 i/o虚拟化。
应用场景
鲲鹏软件开发工具链
硬件系统
其他加速器
复习
项目展示
6月4日 操作系统
速度不一样的io, 怎么协调?
polling 轮询 但是要花费很多处理器时间。 可能占本来的40%
一个page 一般4kiB, 12bits, offset 12bit, 然后 page number 20bits
OS keeps track of which process is active – Chooses correct page table Memory manager extracts page number from virtual address 。
cache中的 block 64B
page 变大,但是可能浪费内存。 层次化页表。 transalation, 如果 tlb命中, 那就一个周期就可以 hit。 typically 32 - 128 entries , 通常 全相连
64 entries, 4kb pages , 一页一个entry, tlb 就可以达到 64 * 4 kb的内存空间。
dma 可以不通过cpu , 把数据传到内存 一万 rpm per minute 每分钟 一万 revolutions 转
6月11日
nvidia 2006年提出 cuda, 提供算子 帮助深度学习 3个月一篇论文。 映射到底层算子库即可
很多芯片小公司被买了兼并了, 集成电路对小公司不友好。 老师:“我当时在xilinx的时候他们跟我讲的。。。”
fgpa , 可以设定我们需要的硬件。
考 asic, fpga , cpu, gpu 全称 application specific integrated circuit fieldprogrammable gate array graphic processor unit central processing unit cmos conpelemently metal oxide semiconductor。
3级cache 大概几mb , 多核 几十mb
bitfile 通过 jtag 编程到 fpga上 。
想和华为员工一起做算子开发, 模型迁移都可以 找老师, 类似于实习。 实习人太多了, 来了又摸鱼, 不如放学校里做些项目。
华为的 人工智能芯片 升腾ai 芯片,
ai 芯片 有gpu, fpga, asic 。 cpu 增加指令 提升空间有限, 高主频会功耗过大过热。
gpu, 添加 tensorcore,增加多数据类型支持。 需要类型高度统一, 互相无依赖的大规模数据, 不需要打断的纯净计算环境。 有几千个小核心, 大量thread并行,很多alu, 主要问题 成本高, 延迟高, 能耗大。
3090 卖一万, 2021年6月炒作 2, 3万
cpu 通用型, 擅长逻辑判断和串行运算, 大量分支跳转和中断处理,低延时因为有大量cache,高时钟频率,复杂逻辑控制。
tpu: 加速tensorflow 脉动阵列, 加速卷积,矩阵乘矩阵。
训练: nvidia 的gpu集群, google的tpu。 推理: gpu,fpga,asic都可以。
华为的ascend ai处理器 310推理, 910 训练。达芬奇架构。 属于npu neural network processing units 神经网络处理器 , ibm的truenorth也是 npu。
全栈 , 华为做 芯片, 芯片算子库, 算子开发工具, ai框架mindspore,
3d cube: 一个时钟周期 4096个fp16 Mac 运算 。 支持 几十mw ip到几百w 的芯片。
华为也有做图调度, 机器学习加速系统, 可以问老师找他们实习。 感算, 在传感器上计算,减少传输损耗 。 processing in sensor 模拟计算, 减少读出。模拟卷积计算单元, 架构中不用adc。 模拟计算电路 可以初步人脸检测, pixel 像素内计算, 全光神经网络。optical nn 但是做不了非线性的比如池化,要转成电,
10分简单的问题,10分对错题,+四道大题。试卷是英文,题目描述比较长,要读快一些 回答可以用中文.
考点总结
20年题目: int 到 float 有精度损失 long 到 double 有精度损失 long 到 float 有精度损失 int到double没有精度损失
summary of riscv 指令格式 maximum 时钟频率 要知道addi会经过哪些模块, 关键路径. 一个or指令有几次reg read, write? 总共多长时间? 流水线加速多少? 为什么要重新计算PC+4? 防止 PC和PC+4 同时发送. 为什么指令中间也要插入寄存器?
必须将指令与数据一起流水线化,以便控制在每个阶段正确运行.
信息存在pipeline registers中给later stages 使用.
冒险
冒险是什么? 下一条指令不能执行. 结构冒险是什么? 硬件不支持多条指令在同一时钟周期执行. 比如第一条指令write同时第四条指令read.
1 stall一些指令 2 增加硬件. 3. 两个独立的read ports和一个独立的write port 这样三个access per cycle 可以同时发生. 4,. 用isa, 比如最多一个 memory access/instruction 数据冒险是什么? 加法需要前一条减法的结果. 解决方法: 1. bypassing 旁路也叫forwarding. 我们需要detect need 就是比较前一个的destination 和当前的sources 写到x0要忽略 2. load-use data hazard 也就是lw再add就不得不阻塞, pipeline stall或者叫bubble. 3. code scheduling 插入一些无关的指令 怎么插入空指令? 把EX,MEM,WB的控制信号都置为0 控制冒险是什么? 也叫branch hazard, 有跳转发生的时候取到的指令不对. 方法1: stall , 太慢了 方法2 : 分支预测. 这些导致CPI>1 怎么计算下一个PC? 1. 无条件jump : opcode,pc和offset 2. jump register : opcode ,register value 和offset 3. 条件跳转: opcode, register , pc and offset 4. 其他指令: opcode和pc
memory hiserarchy
容量: register << sram << dram 延迟: register << sram <> offchip
cache的组成, tag,
miss penalty : 替换一个block, 然后deliver block AMAT: average memory access time AMAT=time for a hit+ miss rate x miss penalty
处理器地址分为三部分 block offset: byte address within block set index: 选择set tag: index 大小: log2(sets的数量) tag大小: 32 - index大小 - log2(bytes数/block) 要会计算这些. ppt40页还看不太懂,要结合题目仔细看看. block在cache中吗? 比较tag和地址前两位. block在set哪个位置? 看中间两位 为什么directed cache不行? 因为pingpong0404 会不断miss
全相连 fully associative : no index field ,
directed mapped: 1个compartor, sets=blocks
n 路 组相联, n个比较器, sets=blocks/n n变大, sets更少. index field 更小. 比较器变大. n变小, sets变多, index field 更大, tags位数变少.
替换策略 1. random 2. LRU least recently used ,每次access 更新状态. 最近最少使用策略,判断最近被使用的时间,距离目前最远的数据优先被淘汰,作为一种根据访问时间来更改链表顺序从而实现缓存淘汰的算法。 简单介绍:就是经常使用的数据在链表的头部,冷数据在尾部,一旦链表容量不够(缓存空间满了),执行删除尾部策略。一般来说链表的增删是快,但是有个缺点就是查询慢,LRU为了获取元素快,肯定是不能每次逐个遍历获取的元素的,所以还有个HashMap来获取你需要的元素,复杂度O(1)。 3. FIFO=round-robin 用在highly 组相联的caches中. 4. NMRU Not-Most-Recently Used 先入先出, 但是最常使用的不出队.
compulsory 冷启动 capacity cache 太小了 conflict(collision) 多个内存地址mapped to同一个set
local miss rate:=L2$ Misses / total_L2_accesses L1miss 数量=L2access数量 Global Miss rate=L2$ Misses / Total Accesses=(L2$ Misses / L1$ Misses) × (L1$ Misses / Total Accesses)=L2的miss 率 x L1的miss率 AMAT=L1hit的时间 + (local) Miss率 L1$ ×
(L2hit的时间 + (local) Miss rate L2$ × L2$ Miss penalty)
| technique | hit time | miss penalty | miss rate | 硬件复杂度 | | ---- | ---- | ---- | ---- | ---- | | blocksize变大 | | 更慢取 | 减少 | 0 | | cache size变大 | 更慢 | | 减少 | 1 | | 更高associativity | 更慢 | | 减少 | 1 | | 多级cache | | 变小 | | 2 | always减少miss rate是错的. 也不一定能够减少AMAT 直接连 cache of size N 和两路组联cache of size N/2 有一样的miss rate √
写回
为了确保cache和memory一致
write through 很慢, 所以用write buffer 让处理器写到buffer就继续工作. write back 写回 写到cache, 逐出时再写到memory. 需要 dirty bit来判断是否写回. 优点是减少了write 操作, 缺点是 更复杂的控制逻辑, 时序不好控制, 有时候unreliable.
写分配: memory中旧值提取到 cache 然后写cache. no 写分配: write cache miss时, 只写到memory.
常见是 write through and no 写分配 write back with 写分配.
reduce 写hit时间. 1. 设计数据 RAM 可在一个周期内执行读写操作,tag miss后恢复旧值 2. 全关联(CAM 标签)缓存:仅在命中时启用字线 3. 流水线写入:将写入数据保存在缓存之前的单个buffer中,在下一个store的tag检查 时write cache data
如果还有 L2,则使用较小的 L1 - trade : 增加 L1 未命中率以减少 L1 命中时间 - 备份 L2 减少 L1 未命中惩罚 - 降低平均访问energy 使用更简单的直写 L1 和片上 L2 - L1write through就是L1 write miss了就写到L1和L2, L2 cache吸收write流量,不会进入片外 .L2write back,采用写回的模式,只有miss的时候才会write back,所以write traffic就减少了.对于第二级cache来说,miss一般都很小. - 每次 L1 访问最多一个 L1 未命中请求(无dirty victim写回) 简化了pipeline控制 - 简化了一致性问题 - 简化了 L1 中的错误恢复(可以仅使用 L1 中的奇偶校验位,并在 L1 read检测到奇偶校验错误时从 L2 重新加载 )
要掌握 cache 是怎么替换, 怎么选择, 怎么miss的.
并行的应用
指令级并行 ILP - 同时执行多条指令,例如指令流水线 - 由硬件(超标量)或编译器 (VLIW) 生成和管理 - 在实践中受数据和控制依赖性(即流水线hazards)的限制
线程级或者说task 级并行 TLP 可以同时执行来自同一应用程序的多个线程或指令序列 - 线程:指令序列,具有自己的程序计数器和处理器状态(例如,寄存器文件) - 多核: 物理 CPU:在软件操作系统中,每个 CPU(一次)一个线程 切换线程通常是为了响应 I/O 事件,如磁盘读/写 逻辑 CPU:硬件中的细粒度线程切换,当线程由于缓存未命中/内存访问而阻塞时 超线程(又名同步多线程--SMT):利用超标量架构 同时启动来自不同线程的指令!intel的一部分CPU运用了超线程的技术,可以让一个实体CPU核心模拟出2个逻辑线程. - 在实践中受到通信/同步开销和算法特性的限制.
数据级并行性 (DLP) - 来自单个流的指令对多个数据并发操作 - 受非规则数据操作模式和内存带宽的限制
事务级并行性 - 可以同时执行来自不同事务的多个线程/进程 - 受并发开销的限制
SIMD 和 MIMD 是目前架构中最常见的并行性——通常both in same system 最常见的并行处理编程风格: 单程序多数据 (“SPMD”) - 在 MIMD 的所有处理器上运行的单个程序 - 使用同步原语的跨处理器执行协调
Amdahl’s Law
一半时间可以加速, 2倍加速, 得到1.33 TO / TE=1 / ((1-F) + F/SE)=1/((1- 0.5)+0.5/2)=1.33 << 2 合理的是让并行=串行时间, Equal time in sequential and parallel code: (1-F)=F/SE SE=F/(1-F)=0.95/0.05=20 S=1/(0.05+0.05)=10 loop unrolling GCC会自动为程序做一些优化处理,以提高程序的运行效率,如消除相同运算子句(一个计算式里出现多次“x+y”,则会先生动生成一个局部变量保存"x+y"的值,再做计算)、inlining、loop unrolling等。下面就loop unrolling作以总结。 举个例子: for ( i=0; i < 9; ++i ){ x[i]=i;} 在上述代码中,每为执行一次循环都要做一个i<9的判断,这当然会占用一部分执行时间。但如果把代码展开: 1. x[0] = 0; 2. x[1] = 1; 3. x[2] = 2; x[8] = 8; 则不需要i<9的判断,效率也自然提高。 这就是loop unrolling,一种以空间换效率的优化处理方式,在其间进行取舍的过程被称为speed-space trade off 20年考题: 但是不知道答案 a 乱序执行will address WAR and WAW hazards 不能解决, 是引起问题. b loop unrolling 可以减少 结构hazard . 感觉不对. 减少结构 hazard的方法: 1 stall一些指令 2 增加硬件. 3. 两个独立的read ports和一个独立的write port 这样三个access per cycle 可以同时发生. 4,. 用isa, 比如最多一个 memory access/instruction c 4种cache miss ,不对, 应该是三种 d 每个线程有dedicated PC , icache 和 register ,不对 icache是同一个 Simple Multithreaded Pipeline 必须在管道中进行线程选择以确保在每个管道阶段读取/写入正确的状态位 在软件(包括操作系统)看来是多个 CPU,尽管速度较慢 多线程的开销 每个线程需要自己的用户状态: PC GPR 此外,需要自己的系统状态 - 虚拟内存页表基址寄存器 - 异常处理寄存器 其他开销:来自竞争线程的额外缓存/TLB 冲突 (或添加更大的缓存/TLB 容量) 调度更多线程的操作系统开销(所有这些线程来自哪里?) 超线程 SMT (HT): 逻辑 CPU > 物理 CPU 每个内核同时运行多个线程 每个线程都有自己的架构状态(PC、寄存器等) 共享资源(缓存、指令单元、执行单元) 提高内核 CPI(时钟滴答) 每条指令 可能会降低线程 CPI(利用率/带宽与延迟)
openmp
只能用在shared memory 归约reduction:指定每个线程私有的 1 个或多个变量在并行区域末尾进行归约操作:reduction(operation:var) where - Operation:对并行区域末尾的变量 (var) 执行的运算符 - Var:要对其执行标量缩减的一个或多个变量。
Multiprocessor Caches
即使只有一个处理器,内存也是一个性能瓶颈 为什么用cache?使用cache来减少对主内存的带宽需求 每个内核都有一个本地私有cache来保存它最近访问过的数据 只有cache miss才能访问共享的公共内存 架构师的工作:共享内存=> 保持缓存值一致 思路:当任何处理器cache miss或写入时,通过互连网络通知其他处理器 如果只读取,许多处理器可以有副本 如果一个处理器写入,则使任何其他副本无效 从一个写入事务 处理器,其他缓存“snoop窥探”公共互连检查它们持有的标签 使其他缓存中修改的相同地址的任何副本无效
每个缓存跟踪缓存中每个块的状态: shared:最新数据,其他缓存可能有副本 modified:最新数据,已更改(脏),没有其他缓存有副本,可以写入, memory out-of-date exclusive:最新数据,没有其他缓存有副本,可以写入,内存最新如果块被替换,避免写入内存在读取时提供数据而不是进入内存 owner: 最新数据,其他缓存可能有副本(它们必须处于共享状态)仅缓存提供读取数据而不是进入内存
Directory Coherence Protocol
Snooping coherence - 内存线的全局状态是它在所有缓存中的状态的集合,任何地方都没有汇总状态 - 所有缓存控制器监视所有其他缓存的活动并维护其线的状态 - 需要广播共享介质(例如,bus或ring)维护所有事务的总顺序 - 总线bus充当序列化点以提供ordering 目录一致性 - 内存行的全局状态是其在所有缓存中的状态的集合,但在directory中有一个摘要状态 - cache 控制器不观察所有活动,只与目录交互 - 可以在可扩展的网络上实现,没有全序和简单的广播,只有一对一的通信 - 目录directory作为序列化点提供ordering
写同一个变量就是 true sharing miss 不同变量造成 invalid就是false sharing miss
乱序问题
如果某些 FPU 或内存单元没有流水线化并且需要超过一个周期,则在执行阶段的结构冲突.比如div要四个周期, mul要三个周期. 由于不同功能单元的可变延迟导致的回写阶段的结构冲突 由于不同功能单元的可变延迟导致的乱序写危险 如何处理异常? Read-after-Write Write-after-Read Write-after-Write 在Issue 阶段的指令i 参考这个表 FU 可用吗? 检查busy列 RAW? 在 dest 列中搜索 i 的来源 WAR? 在源列中搜索 i 的目标 WAW? 在 dest 列中搜索 i 的目的地 如果未检测到hazard,则将条目添加到表中; 回写后从表中删除条目
scoreboard for inorder issues
Busy[FU#]:表示 FU 可用性的位向量。 (FU=Int、Add、Mult、Div) 这些位是硬连线到 FU 的。 WP[reg#]:一个位向量,用于记录待写入的寄存器。这些位由 Issue 阶段设置并由 WB 阶段清除 Issue 检查指令(opcode dest src1 src2)与记分板(Busy & WP)以分派 FU 是否可用? Busy[FU#]raw? wp[src1]or wp[src2]war? can not arise waw? wp[dest]
寄存器重命名
任何反依赖都可以通过重命名来消除。 (重命名->附加存储) 可以在硬件中完成吗? yes!
Decode 会进行寄存器重命名并将指令添加到发布阶段重新排序缓冲区 (ROB) 重命名使 WAR 或 WAW 危险不可能发生 可以调度 ROB 中已满足 RAW 危险的任何指令。 乱序或数据流执行 源中的名称何时被数据替换?每当 FU 产生数据时 名称何时可以重用?每当指令完成时
ROB 循环管理 - “exec”位在指令开始执行时设置 - 当指令完成时,其“使用”位被标记为空闲 - ptr2 仅在“使用”位被标记为空闲时递增
指令槽在以下情况下是candidate for execution: - 它持有有效指令(“use”位已设置) - 尚未开始执行(“exec”位已清除) - 两个操作数都可用(p1 和 p2 已设置)
取指令并按顺序解码到指令重新排序缓冲区 执行是乱序的(乱序完成) 提交(写回架构状态,即regfile和内存,是有序的
提交前保存结果所需的临时存储(影子寄存器和存储缓冲区) 在指令模板中添加 字段 将指令按程序顺序提交到 reg 文件和内存 ? 缓冲区可以在异常时循环维护,通过重置 ptr1=ptr2 清除重新排序缓冲区(存储必须等待提交才能更新memory)
现代处理器在下一次 PC 计算和分支解析之间可能有 > 10 个流水线级! 如果指令流不正确: penalty : ~ Loop length x pipeline width + buffers
怎么减少Control-Flowpenalty?
软件解决方案 消除分支 - 循环展开 增加运行长度 减少解析时间 - 指令调度 尽早计算分支条件(价值有限,因为分支通常位于代码的关键路径中)
硬件解决方案 - 寻找其他事情要做(延迟槽) 替换 有用工作的管道气泡(需要软件合作)——快速看到收益递减 - 推测,即分支预测 分支之外指令的推测执行 准确性方面的许多进步,被广泛使用
分支预测
动机:分支惩罚限制了深度流水线处理器的性能 现代分支预测器具有很高的准确度(> 95%)并且可以减少分支惩罚 所需的硬件支持:预测结构:分支历史表、分支目标缓冲区等。 错误预测恢复机制: - 将结果计算与提交分开 - 删除pipeline中分支后的指令
- 将状态恢复到下一个分支
静态分支预测: 总是选一个跳转可能 ISA 可以将首选方向语义附加到分支,例如,摩托罗拉 MC bne0(首选) beq0(未采用) ISA 可以允许任意选择静态预测方向,例如,HP PA-RISC,Intel IA-64 通常报告为 ~80% 准确的
时间相关性 分支解析的方式可能是下一次执行解析方式的良好预测器 空间相关 几个分支可能以高度相关的方式解析(首选执行路径) Assume 2 BP bits per instruction Change the prediction after two consecutive mistakes!
Branch History Table (BHT)
Branch Target Buffer (BTB)
BTB 条目比 BHT 昂贵得多,但可以在管道的早期重定向提取并可以加速间接分支 (JR) BHT 可以保存更多条目并且更准确
对每个预测分支的寄存器重命名表进行快照,如果分支预测错误,则恢复较早的快照
Unified Physical Register File 在decode过程中将所有架构寄存器重命名为单个物理寄存器文件,不读取寄存器值 功能单元从单个统一寄存器文件读取和写入,在执行中保存提交和临时寄存器 提交仅更新架构寄存器到物理寄存器的映射,无数据移动
in order和 out of order 指令获取/decode/重命名总是有序的 需要依次解析 ISA 以获得正确的语义 推测性 OoO 指令获取的建议,例如多标量。 预测并行提取/解码/执行的顺序程序段之间的控制流和数据依赖性,如果预测错误则进行修复 Dispatch(将指令放入机器缓冲区以等待issue)也总是有序的
顺序发射和乱序发射 有序: 由于 RAW 依赖性或结构性危险,或可能的 WAR/WAW 危险,指令不能发给执行单元,除非所有前面的指令都已发给执行单元 乱序:按程序顺序分派到保留站的指令 (或其他形式的指令缓冲区)等待操作数到达,或清除其他危险 - 虽然较早的指令在发布缓冲区中等待,但可以无序地分派和发布后续指令
除了最简单的机器之外,所有机器都有乱序完成,因为功能单元的延迟不同,并且希望在可用时立即bypass value 经典 RISC 5 级几乎没有按顺序完成 LD需要两个周期,但以下一个周期的整数运算同时完成,而不是更早 添加流水线 FPU 立即带来 OoO 完成
有序提交支持精确的trap,今天是标准的 一些建议通过提前退出一些指令来压缩重新排序缓冲区来降低有序提交的成本,但这只是一个优化的有序提交 早期的 OoO 机器(不精确的trap)无序提交实际上是完成,不可撤销地改变了机器状态,即在这些机器中complete==commit
Now let's assume that we execute instruction 5 before all other instructions, but instruction 5 causes an exception (e.g., page fault). We want to provide precise exceptions in this processor. What happens with instructions 1, 2, 3, 4, and 6 before execution switches to the OS handler? What should happen if instructions, 1, 2, 3, or 4 also raise an exception? (5 points)
为了提供精确的异常,在切换到操作系统处理程序之前,我们必须在指令 5 之前执行并提交所有指令。 指令 6 必须被终止(因此不会提交),因为它在 5 之后。如果指令 1、2、3 或 4 也引发异常,则应优先考虑最早出现异常的指令,并且之后的指令应该从流水线中flush掉。
How can we always be able to execute loads and stores out of order before their addresses are known? What is the downside and how is it handled? Specifically, assume that we executed instruction 5 before instruction 4, but then realized that |x6 – x3| < 4. (5 points) 我们可以推测性地假设所有加载和存储的地址是不重叠的,并在知道它们的地址之前issue它们。 一旦realize地址,如果我们意识到我们不应该对某些加载和存储重新排序,我们必须终止我们不应该执行的那些以及依赖于它们的任何进一步指令。For example, if we realized |x6- x3| <4,we have to terminate instructions 5 and 6. Once instruction 4 completes, we then re-execute instructions 5 and 6. E.g.: 16 KiB DRAM, 4 KiB Pages (for VM), 128 B blocks (for caches), 4 B words (for lw/sw) 21年考试内容: 题目描述非常长, 延长了15分钟.12页全英文. 10分简单的问题,10分对错题,+四道大题。试卷是英文,题目描述比较长,要读快一些 十个回答题十分. 摩尔定律 5个对错题,一个两分, 我讲讲我的答案不一定对. 直连cache N 和 2路 N/2 一样 miss rate , 应该是对的乱序可以解决 WAR WAW hazard , 应该是错的. 因为 是导致这个问题. 然后就是 作业几个题目,都非常像, 建议把答案抄A4纸上.题目太长了实在记不住了 一个是缓存一致性 第二个是 流水线插入气泡,旁路 第三个是 乱序发射的 BHT , 第四个, false sharing miss 考试 cache 直写,写回, 直接映射 全相连 求cache capacity 替换策略 随机替换 lru fifo 也就是round robin not most recently used 要知道 larger block size 会 导致 miss rate 增加, 为什么? 硬件复杂度0 ,为什么。 larger cache size 的影响 local miss rate 二级miss/ 二级访问 global miss rate amdahl 法则 合理是让加速=没加速 0。05=0。05 fpu 计算和访问平衡 超线程, 切换来尽量多使用处理器 snooping conherence protocol false sharing 一个cache line有多个word 如果两个处理器写同一个line address 读的变量是不同的,但是却会导致 invalid issue in 复杂流水线 控制 乱序因为加了其他计算模块, branch prediction bits unified physical register 数据不移动, 用别名。 rename table, free list, rob dispatch : dram 16kib , 4kib pages , 128bytes blocks, 4B words 这个ppt有 考试80% 不一定有选择题, 可能有填空题,

您可能感兴趣的文章

本文地址:https://www.ceomba.cn/40119.html
文章标签: ,   ,  
版权声明:本文为原创文章,版权归 ceomba 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!