体系结构
淡定路过的我
这个作者很懒,什么都没留下…
展开
-
华科Logisim实验改RISV指令集
参考书目:数字逻辑与计算机组成熟悉RISC-V指令格式官方文档之类的可以搜索到熟悉Logisim操作Logisim自带的手册或者网络资源具体实现步骤实现立即数拼接器InstrToImm1、采用"工程"->“分析组合电路”,构造立即数拼接器。由P221,给出的Verilog代码逻辑表达式可得我们需要将32位指令划分为9个输入。(原因是不同类型RISC-V指令格式内Imm的位置不一样)序号输入1Instr_312Instr_31_123Instr_3原创 2020-12-06 15:49:56 · 2278 阅读 · 3 评论 -
Process in Memory——Investigation report
一、PRIME: A Novel Processing-in-memory Architecture for Neural Network Computation in ReRAM-based Main Memory文章链接关键词:neural network, resistive random access memory优化对象:NN —— 因为计算单元需要获取突触权重,所以高性能的NN加速需要高存储带宽优化方法:利用ReRAM设计新的内存处理架构PRIME——基于ReRAM crossbar a原创 2020-06-19 15:29:45 · 1366 阅读 · 0 评论 -
Notebook——A New Golden Age in Computer Architecture: Empowering the MachineLearning Revolution
一、影响ML硬件设计的六个因素1、Trainingtraining(训练)和inference(推理)同样重要,但是training需要的运算操作以及硬件资源远超inference。所以ML硬件设计通常选择更简单,更容易扩展的推理部分入手2、Batch SizeBatch Siz(批处理大小)对体系结构具有根本性意义,是操作数重用的实现形式。某些情况批处理大小会限制ML性能,这时增加Batch Size即可;有时候训练速率小于批处理大小,意味着Batch Size不是瓶颈,需要寻找其他算法或者体系结原创 2020-06-17 13:41:24 · 404 阅读 · 0 评论 -
体系结构学习18(Last)-Data Center
1、Data CenterRLP:请求级并行,松耦合2、Cloud ComputingEconomic of ScaleSupported by Data CentersIssues:(1)Multi-Tenant IsolationResource Allocation:CPU、Memory、IO devices、NetworkApplication Isolation:(2)Load BalancingTraffic PatternSolution:Background原创 2020-06-01 18:05:45 · 167 阅读 · 0 评论 -
体系结构学习17-Interconnections
1、通信模式同一台计算机硬件的互联Shared Memory:紧耦合,严格考虑coherence和一致性,但不需要单独指定数据目的地址(适用于多线程共享数据)Message Passing:松耦合,更好的独立性,通信环境简洁,但通常需要数据目的地址。(适用于Producer and Consumer)(1)send->Receive(Data)/Receive(Source&Data)(2)Message Passing Interface(MPI):MPI_Init,Send,R原创 2020-06-01 17:28:04 · 480 阅读 · 0 评论 -
体系结构学习16-Memory Consistency
1、Memory Consistency来源保证每一个处理器接触一致的数据Global Ordering of Access to all location而cache Consistency 只是local ordering of access to each cache blockMemory Ordering 情况:Single Processor:in-order(与程序代码顺序一致) , Out-of-OrderMIMD ProcessorI/O DevicesSoftware原创 2020-06-01 16:31:37 · 402 阅读 · 0 评论 -
体系结构学习15-cache coherence
1、Cache Coherence现代处理器的并行代码或线程共享内存,需要保证数据一致性。从软件、硬件两个角度考虑解决cache一致性。现代处理器cache一般对程序员透明,ISA一般只提供cache flush命令。如果靠软件解决,对程序员负担太大。Hardware Based:所有核心共享一个L1cache,但是cache通常需要追平CPU频率,很可能无法完成所有核心的读写请求而且容量也成限制,并且核心与cache的连线会变长导致latency边长,最终使得cache成为瓶颈。采用多个L1原创 2020-05-18 20:37:07 · 3466 阅读 · 0 评论 -
面向人工智能新特性的计算系统设计讲座笔记
本文基于:上海交通大学 过敏意教授 2020-5-18 ”面向人工智能新特性的计算系统设计“ 讲座,以记录学习为目的。若侵权,立删除。1 TPU = 3 GPU = 1000 CPUDavid Patterson:A New Golden Age for Computer Architecture1、常见人工智能模型的计算特性模型计算量大、模型存储量大、计算模式单一(建立在采用的模型单一前提下?)Google TPU、华为昇腾等2、新的计算特性及其挑战算法迭代更新、模型黑盒特性、模型稀疏特原创 2020-05-18 15:06:28 · 336 阅读 · 0 评论 -
体系结构学习14-Multiprocessor
1、Multiprocessor同一时间多个任务同时运行在多个处理器,并行计算。降低功耗:通过多个低频处理器降低电压从而降低功耗。提高灵活性和可扩容性,降低复杂度。提高鲁棒性:在部分机器出问题可以运行其他机器。2010年后基本只有单芯片晶体管数量提高(单芯片上核心数量增加),即主要依靠线程级并行提升性能。2、如何生成多任务同一个任务细分后分配到多个核多个独立的任务分配到多个核3、Multiprocessor TypeLoosely Coupled 没有共享内存:联系不紧密,多用原创 2020-05-16 17:11:28 · 380 阅读 · 0 评论 -
体系结构学习13-Memory
1、Memory 概述Processor and Cache <—> Memory <—> Storage( SSD/HDD)速度快于外部存储系统,但是断电后丢失数据2、现代计算机主存成为瓶颈对于一个系统来说,主存是一个共享资源,需要保证资源分配公平公正。容量、带宽、能耗(率先频率)、DRAM尺寸(工艺决定其内存密度、功耗、访存速度上限)DRAM:一个晶体管存电荷,读取时需要先充电然后放大信号,读取速度慢并且电容会漏电需要定期刷新耗电。SRAM:六原创 2020-05-16 11:22:48 · 494 阅读 · 0 评论 -
Niagara: A 32-Way Multithreaded Sparc Processor——学习笔记
2005 IEEE Published by the IEEE computer Society1、主要特征该处理器采用多线程架构(TLP),支持32个线程,显著提高吞吐量(数据中心、网络服务器)2、为什么提出这样架构的处理器传统加速方式主要针对单线程(多发射和乱序这样的ILP,以及分支预测等方式),这些方法受限于内存访问的延迟以及代码本身的并行性,而且导致了微处理器的复杂度爆炸式的增长以及功耗增加。3、使用环境Commercial sever environment4、面临的主要挑战原创 2020-05-10 15:47:31 · 443 阅读 · 0 评论 -
体系结构学习12-Cahce
1、Cache的必要性:CPU处理速度远超内存访问速度(Processor-Memory Gap)主要体现在latency :主存50~100ns,CPU <1nsBandwidth:指令和数据都需要访问内存Bandwidth-Delay Product:Little‘s Law现实中存储单元的问题越大地址越多驱动单元越多线越长访问越慢越快越昂贵带宽越宽越昂贵2、...原创 2020-05-06 20:28:04 · 718 阅读 · 0 评论 -
体系结构学习11-VLIW处理器
1、VLIW为什么需要VLIW:乱序处理中硬件需要复杂的控制电路来检查数据依赖关系。(MIPS R10K)编译时确定哪些指令可以同时执行,然后将它们打包为同一个指令,这样减少了CPU的硬件复杂度,但是增加了软件的负担,导致编译器制作难度增加。2、VLIW Scheduling ModelEQ:指令执行完成前可以使用其目的寄存器LEQ:指令发射后就不能使用其目的寄存器3、循环展开...原创 2020-05-05 21:50:04 · 1866 阅读 · 0 评论 -
体系结构学习10-DLP
DLP类型SISD、SIMD、MISD(TPU:脉动网络)、MIMDSIMD实现形式同一时间不同部件共同工作(Array processor)在同一部件顺序工作(Vector processor)Vector ProcessorsVector RegisterVector Operation:多为同一种操作,若不同数据需要不同操作可能需要使用Vector Mask.在执行时...原创 2020-04-27 12:46:27 · 528 阅读 · 0 评论 -
体系结构学习9-多线程
乱序处理器的同时多线程2010 ILP差不多到了尽头,程序员的免费的午餐到头了。TLP(多线程)· 相同进程的线程-将大型任务切分,单个任务利用线程。· 不同进程的线程-提高整体CPU利用率,但是降低了单个任务效率。代价:每个线程都需要GRP、PC以及相应状态。SMT· Vertical Multithreading:利用不同时钟周期issue不同指令。缺点:不能利用指令is...原创 2020-04-19 11:28:53 · 683 阅读 · 0 评论 -
体系结构学习8-乱序中的数据访问
精确中断点前面的指令都完成写回到相应的寄存器,后面的还没有。好处易于debug,切换程序,贴切冯诺依曼结构更易于理解方法1、顺序执行——浪费时间,无法判断每个指令的执行时间(lS)2、Reorder Buffer——指令乱序执行结束后存储在ROB,然后按冯诺依曼结构顺序写回到真实地址,让程序员看见结果。在写回(retire)时处理中断,错误的branch prediction。优劣...原创 2020-04-06 21:35:31 · 466 阅读 · 0 评论 -
体系结构学习7-乱序执行
乱序执行解决RAW数据依赖(True dependency),提高指令并行。WAW,WAR事实上是处理器寄存器资源不足导致的。issue:准备将某条指令送入某个队列执行 dispath:某条指令进入某个队列开始执行Load/Store指令需要和内存交互,执行时间是无法静态确定的(如cache miss,TLB miss等等)内部执行实际是数据流控制。超标量执行和乱序执...原创 2020-04-06 17:37:22 · 1654 阅读 · 0 评论 -
linux移植日记-day5-中断向量表基地址的选择
由CP0的status寄存器的BEV位(1 bit)来决定中断向量入口的基地址。BEV = 1 :意味着"Bootstrap",以0xbfc00200为基地址BEV = 0 :意味着"Normal",以0x80000000为基地址然后结合status寄存器的EXL(0 normal level ; 1 exception level),与相应的中断号来选择中断向量入口的偏移量。如上图,...原创 2020-03-19 20:50:59 · 454 阅读 · 0 评论 -
linux移植日记-day4
TLB相关指令1、TEQ (R):if rs == rt then trap2、TEQI(I):if rs == sex_imm then trap3、TGE ® : if rs >= rt then trap4、TGEI (I):if rs >= sex_imm then trap5、TGEIU (I):if rs >= sex_imm.asUInt th...原创 2020-03-18 19:46:57 · 191 阅读 · 0 评论 -
linux移植日记-day 3
目标: 完成页表一、数据结构1、TLB Entry元素功能pagemask控制页面大小,默认为0,页面大小为4kB第二行(VPN2…)对应CP0寄存器的Entry_hi寄存器第三行、第四行对应CP0寄存器的Entry_lo0和Entry_lo1寄存器class TLBEntry_lo extends Bundle{ val pfn = UIn...原创 2020-03-17 21:38:21 · 140 阅读 · 0 评论 -
体系结构学习-6-超标量处理器
MIPS32-5段流水线采用了指令级并行方式(5个流水段同时运行5条指令)提升系统吞吐率,是一种标量处理器(CPI≥1CPI \ge 1CPI≥1),但是一个周期一条指令以及无法满足现代计算机需求了。超标量处理器(Superscalar)1、基本思想:增强指令集并行,让每个周期执行更多指令,实现 CPI<1CPI<1CPI<1 。(IPC=1/CPIIPC = 1...原创 2020-03-16 20:30:42 · 1078 阅读 · 1 评论 -
体系结构学习-5-Local Predictor
A set of Local History Register: 根据branch PC的后位索引向相应的Local History Register查询(跳转后更新值),也可以再用LHR的值作为PHT(唯一共用)的索引去查看相应项跳转state状态。不同预测器的选择:两者结合,拓宽适应场景,提升准确度不同的预测方式可能需要不同的训练准备时间,训练时间常常和准确度成反比,可以在...原创 2020-03-14 21:20:57 · 371 阅读 · 0 评论 -
体系结构学习-4-Global predictor
Global Predictor : Branch History Register记录了全局的跳转信息,每有一个分支语句跳转便在低位移入1,没有跳转便移入0。每次访问时得到的值是该分支语句之前的全局历史跳转信息,本次分支执行后结果才被写入。同时运用该值作为索引去读取Pattern History Table的状态信息。缺点: 如果是不同的分支指令遇见了一样的BHR值,那...原创 2020-03-14 20:40:19 · 325 阅读 · 0 评论 -
体系结构学习-3-基本分支预测方法
静态分支预测(Static Branch Prediction): 静态分支预测的基本原理就是“Static”:遇到跳转指令后是否跳转由标志位 valid 是否为1来决定,采用静态分支预测的方法就是在代码运行前就决定好这个分支的 valid=1(始终跳转) or valid = 0 (始终不跳转)性能评估: 按之前文章-1-中提到过的 数据进行估算程序中的分支指令大约占据2...原创 2020-03-13 20:32:59 · 1751 阅读 · 0 评论 -
体系结构学习-2-现代处理器最常用的分支预测
现代处理器最常用的解决控制冒险的方法就是分支预测法(Branch Prediction).2018年年初Intel承认的"Meltdown"漏洞就是有关于"分支预测"。Meltdown漏洞相关报道上述报道中对Meltdown漏洞生动的诠释:赵晓峰打比方说:“我拿着假的录取通知书去拿宿舍钥匙,我虽然会被发现是假冒的,但是在这一过程中,我会发现相应学号对应的相应宿舍。这样,我就能推测出不同专...原创 2020-03-12 18:42:18 · 955 阅读 · 0 评论 -
Linux 移植日记 day2
今日任务预测:完成cache以及TLB设计与异常处理继续在尝试运行u-bootError:bfc007a0: bc500000 cache 0x10,0(v0)==============nemu registers================$pc: 0xbfc007a0 $hi: 0x00000000 $lo: 0x00000000$ninstr: 00...原创 2020-03-12 17:06:07 · 174 阅读 · 0 评论 -
体系结构学习-1-控制冒险的六种解决方案
MIPS pipeline:理想形式: 每一个周期执行一条指令IFIDEXMEMWB问题:控制冒险1.Stall:IFU每次需要等待IDU解码后确定下一条,相当于两个周期才执行一条指令.“Every instruction takes two cycles ”IFIDEX确定下一条PCMEMWB缺陷:2个周期执行一条指令太保守了,浪费周期。2.Branch Prediction:...原创 2020-03-11 19:49:59 · 6900 阅读 · 0 评论 -
Linux移植日记 day1
基础条件回顾:完成了一个带有段寄存器的基于MIPS的多周期CPU,现有u-boot代码以及差分测试框架,以成功运行u-boot为目标实用工具积累:2020-3-6:mips-linux-gnu-objdump -d u-boot | less——定位u-boot运行结果出错的pc、instr交叉编译的话需要用对应的编译器,比如:aarch64-linux-gnu-objdump -...原创 2020-03-10 23:42:38 · 225 阅读 · 0 评论