登入帳戶  | 訂單查詢  | 購物車/收銀台(0) | 在線留言板  | 付款方式  | 運費計算  | 聯絡我們  | 幫助中心 |  加入書簽
會員登入   新用戶登記
HOME新書上架暢銷書架好書推介特價區會員書架精選月讀2025年度TOP分類瀏覽雜誌 臺灣用戶
品種:超過100萬種各類書籍/音像和精品,正品正價,放心網購,悭钱省心 服務:香港台灣澳門海外 送貨:速遞郵局服務站

新書上架簡體書 繁體書
暢銷書架簡體書 繁體書
好書推介簡體書 繁體書

一月出版:大陸書 台灣書
12月出版:大陸書 台灣書
11月出版:大陸書 台灣書
十月出版:大陸書 台灣書
九月出版:大陸書 台灣書
八月出版:大陸書 台灣書
七月出版:大陸書 台灣書
六月出版:大陸書 台灣書
五月出版:大陸書 台灣書
四月出版:大陸書 台灣書
三月出版:大陸書 台灣書
二月出版:大陸書 台灣書
一月出版:大陸書 台灣書
12月出版:大陸書 台灣書

『簡體書』RTL设计师面试攻略

書城自編碼: 4180262
分類:簡體書→大陸圖書→教材研究生/本科/专科教材
作者: [美]奇普瑞森[Chipressian]
國際書號(ISBN): 9787030838216
出版社: 科学出版社
出版日期:

頁數/字數: /
釘裝: 平装

售價:HK$ 74.8

我要買

** 我創建的書架 **
未登入.



新書推薦:
最后一件大事
《 最后一件大事 》

售價:HK$ 63.8
镜鉴日本:日本经济的经验与教训
《 镜鉴日本:日本经济的经验与教训 》

售價:HK$ 86.9
资产配置行动指南
《 资产配置行动指南 》

售價:HK$ 63.8
书籍的社会史-中华帝国晚期的书籍与士人文化(第二版)
《 书籍的社会史-中华帝国晚期的书籍与士人文化(第二版) 》

售價:HK$ 86.9
活出主体性
《 活出主体性 》

售價:HK$ 75.9
中国城市复兴
《 中国城市复兴 》

售價:HK$ 140.8
踏入她们的河流
《 踏入她们的河流 》

售價:HK$ 96.8
绿镜头——非洲
《 绿镜头——非洲 》

售價:HK$ 96.8

編輯推薦:
我们是一群来自硅谷的硬件工程师,我们经历过多轮硬件面试,深知这个过程有多么令人焦虑和煎熬。我们也曾经历过你渴望在这个领域进一步发展或探索新机遇时可能遇到的种种困难。我们希望本书能够帮助学生和在职人士准备数字设计/验证面试,并在硬件行业找到理想的工作。
內容簡介:
《RTL设计师面试攻略》从RTL设计师视角出发,系统梳理ASIC/VLSI行业标准工作流程中的关键知识与面试要点,通过分享行业经验与*特视角,帮助读者理解企业所需技能,提升面试竞争力,斩获心仪职位。  《RTL设计师面试攻略》分为三大部分:第一部分围绕架构与微架构展开,涵盖CPU流水线、CPU乱序调度、虚拟内存和TLB、缓存一致性、FIFO、CDC、LRU算法、重排序、仲裁器、数字分频器、算术逻辑设计、序列产生器等;第二部分聚焦验证、实现、综合与功耗,详细讲解设计验证、形式验证、CDC检查、RDC检查、ECO流程等;第三部分涉及物理设计和芯片调试,包括STA、SDC、时序ECO等;同时在末尾分享行为类问题及实用面试建议等。
目錄
目录第一部分 架构与微架构第1章 架构与原型 21.1 CPU流水线 2【问题1】MIPS五级流水线是什么样的? 2【问题2】流水线冒险及解决方案——基于MIPS五级流水线的案例分析 4【问题3】能否任意增加CPU流水线的深度? 6【问题4】如何实现基于硬件的分支预测? 71.2 CPU乱序调度 9【问题5】Tomasulo算法如何工作? 9【问题6】Tomasulo算法中如何处理内存引起的数据依赖? 11【问题7】如何通过内存处理数据依赖? 12【问题8】如何在Tomasulo算法中实现基于硬件的推测以*小化控制冒险? 161.3 虚拟内存和TLB 19【问题9】使用虚拟内存有哪些好处? 19【问题10】虚拟地址如何转换? 19【问题11】为什么需要TLB? 20【问题12】如何处理TLB 缺失? 21【问题13】如何处理缺页异常? 211.4 精确中断的实现 21【问题14】什么是精确中断?什么是非精确中断? 21【问题15】如何实现精确中断? 221.5 缓存 25【问题16】为什么需要缓存? 25【问题17】什么是缓存冲突? 27【问题18】缓存中的读/写/替换策略是什么? 27【问题19】如何衡量缓存性能? 29【问题20】为什么缓存增大后性能没有提升? 30【问题21】用虚拟地址访问缓存会有什么问题? 30【问题22】根据索引位和标签(tag)位,缓存有哪些类型? 311.6 缓存一致性 33【问题23】什么是NUMA/UMA架构? 33【问题24】什么是缓存一致性? 34【问题25】如何实现缓存一致性? 34【问题26】你能展示基于侦听的MSI 协议状态转换吗? 35【问题27】什么是MESI/MEOSI/MEOFSI协议? 37【问题28】如何为MESI协议实现主目录? 381.7 通用片上总线协议 39【问题29】能描述一下APB协议的工作原理吗? 39【问题30】能描述一下AHB协议的工作原理吗? 42【问题31】能描述一下AXI协议的工作原理吗? 44【问题32】为什么AXI和AHB 协议提供回环突发传输? 45【问题33】AXI协议中通道之间有哪些依赖关系? 46【问题34】如何强制AXI写通道和读通道间的顺序? 46【问题35】AXI协议中的*占访问是什么? 47第2章 微架构设计 482.1 Verilog语法与原语 48【问题36】阻塞赋值与非阻塞赋值有什么区别? 48【问题37】如何检测和解决与X相关的RTL 问题? 48【问题38】casex、casez和case-inside有什么区别? 49【问题39】使用SystemVerilog的signed数据类型时需要注意什么? 50【问题40】“===”和“==”有什么区别? 51【问题41】什么是delta 仿真时间? 51【问题42】什么是通用逻辑门? 522.2 握手协议 54【问题43】什么是valid-ready协议? 54【问题44】什么是valid-ready切片? 54【问题45】如何将4 相req-ack协议转换为valid-ready协议? 57【问题46】如何将valid-ready协议转换为4相req-ack协议? 572.3 FIFO 58【问题47】如何设计基于触发器的非2 次幂深度的同步FIFO? 58【问题48】如何设计一个支持2 次写入1 次读取的基于触发器的同步FIFO 58【问题49】如何基于双端口SRAM设计同步FIFO? 59【问题50】如何设计基于触发器的异步FIFO? 62【问题51】如何设计一个非2 次幂偶数深度的异步FIFO 62【问题52】设计一个基于SRAM 的异步FIFO 622.4 跨时钟域(CDC) 63【问题53】什么是亚稳态? 63【问题54】什么是MTBF?为什么同步器能处理CDC 问题? 63【问题55】传输脉冲信号时有哪些常见的CDC 注意事项? 64【问题56】传输多比特信号时有哪些常见的CDC 注意事项? 642.5 LRU算法 65【问题57】如何实现真正的LRU 算法? 65【问题58】如何实现伪LRU? 662.6 重排序 67【问题59】支持有序读响应功能的内存控制器设计(Ⅰ) 67【问题60】支持有序读响应功能的内存控制器设计(Ⅱ) 692.7 查找表 69【问题61】使用一维LUT(查找表)实现y = f(x) 函数 69【问题62】使用二维查找表实现z = f(x, y) 函数 712.8 仲裁器 72【问题63】设计一个固定优先级仲裁器 72【问题64】设计一个轮询仲裁器 72【问题65】设计一个基于优先级的仲裁器 732.9 数字分频器 74【问题66】实现任意整数N 的分频器(无占空比要求) 74【问题67】实现2N 分频器(50% 占空比) 74【问题68】实现2N 分频器(50% 占空比) 74【问题69】实现(2N+1) 分频器(50% 占空比) 752.10 算术逻辑设计 76【问题70】设计一个简单的ALU 并绘制其逻辑框图 76【问题71】如何实现w = 3/2x+1/4y+z? 77【问题72】如何实现BCD 码的乘以5 运算? 77【问题73】如何实现整数除法器? 78【问题74】用两个16 位加法器构建一个2 周期延迟的32 位加法器 79【问题75】用两个16 位加法器构建一个2 周期延迟的32 位累加器 792.11 序列产生器和检测器80【问题76】序列产生器 80【问题77】设计一个电路用于检测一个输入是否为另一个输入的延迟版本 80【问题78】设计一个检测序列1(01)*1 的电路 81【问题79】3 位回文序列检测器 82【问题80】判断一个无限序列是否是5 的倍数 82【问题81】设计一个可编程序列检测器 842.12 查找 85【问题82】在字节数组中从LSB 开始查找第一个1 的索引位置 85【问题83】在一个16 位数组中从*低有效位(LSB)开始查找第一个1 的索引位置 85【问题84】在深度为8、宽度为1 位的FIFO 中查找*近一次写入的1 的索引位置 86【问题85】在排序数组中找到*接近给定数字的索引(Ⅰ) 87【问题86】在排序数组中找到*接近给定数字的索引(Ⅱ) 88第二部分 验证、实现、综合与功耗以及前端设计检查表第3章 验证 903.1 设计验证 90【问题87】什么是约束随机回归测试?为什么约束检查很重要? 90【问题88】如何验证轮询仲裁器的公平性? 90【问题89】为自动售货机设计编写测试计划 91【问题90】什么是代码覆盖率? 92【问题91】什么是功能覆盖率?如何写功能覆盖率? 923.2 形式验证 94【问题92】什么是形式验证(FV)?它与动态验证(DV)有何不同? 94【问题93】FV 的优缺点是什么? 95【问题94】什么是即时断言?什么是并发断言? 95【问题95】什么是交叠蕴含?什么是非交叠蕴含? 96【问题96】什么是形式化属性验证(FPV)? 97【问题97】如果FPV 无法实现完全验证怎么办? 98【问题98】什么是形式化等价性验证(FEV)? 99第4章 实现、综合与功耗 1014.1 代码规范检查 101【问题99】在代码检查中,*关键的错误有哪些? 1014.2 CDC检查 101【问题100】如何在CDC检查中定义CDC/SGDC约束? 1014.3 复位域交叉(RDC)检查 103【问题101】同步复位与异步复位的区别何在? 103【问题102】RDC检查功能具体有什么作用呢? 104【问题103】常见的RDC技术/方案有哪些? 1054.4 综 合 106【问题104】什么是线负载模型下的综合?什么是合理性综合? 106【问题105】什么是拓扑综合/生成式综合? 106【问题106】运行综合之前的基本设置有哪些?如何执行set_app_var以及创建Milkyway设计库? 107【问题107】什么是DC的综合流程?能否编写一个简单的DC综合脚本? 108【问题108】进行综合分析前需检查哪些内容? 112【问题109】DC 综合优化的常用技术有哪些? 1124.5 逻辑等价性检查(LEC) 114【问题110】什么是LEC?我们为什么要进行LEC? 114【问题111】LEC 的流程是怎样的?又是如何开展关键点映射的? 1154.6 ECO流程 117【问题112】什么是 ECO?为什么需要ECO? 117【问题113】功能ECO的流程是什么? 1174.7 功 耗 119【问题114】什么是静态功耗、动态功耗以及短路损耗功耗? 119【问题115】如何降低静态功耗、动态功耗以及短路损耗功耗? 120【问题116】在功耗敏感型设计中,为何需要隔离单元? 121【问题117】隔离单元有多少种类型? 122【问题118】时钟门控单元的结构是怎样的? 122【问题119】SRAM 有哪些功耗状态? 125第5章 前端设计检查清单 128第三部分 物理设计和芯片调试第6章 物理设计 1346.1 静态时序分析(STA) 134【问题120】STA与亚稳态有何关系? 134【问题121】STA是做什么的?“同步”意味着什么? 134【问题122】什么是建立时间和保持时间? 135【问题123】什么是建立时间约束和保持时间约束? 135【问题124】采用半周期路径的益处何在? 137【问题125】时钟设计裕量的来源有哪些? 138【问题126】STA如何检查复位移除时间与恢复时间、时钟门控单元及数据到数据的时序? 139【问题127】STA是如何验证异步FIFO 功能的? 141【问题128】STA如何对基于锁存器的设计进行检查? 141【问题129】在STA中,多周期路径(MCP)是如何工作的? 1446.2 Synopsys 设计约束(SDC) 145【问题130】什么是设计对象/库对象?如何访问和操作这些对象? 145【问题131】在CTS后的运行阶段,如何设置单时钟设计约束条件? 147【问题132】在CTS后的运行阶段,如何为单时钟设计设置I/O 约束? 148【问题133】如何对多同步时钟设计约束条件进行设置? 150【问题134】在CTS后的运行阶段,如何设置生成时钟的设计约束? 152【问题135】如何设置互斥同步时钟设计约束? 153【问题136】异步时
內容試閱
第一部分 架构与微架构  第一章架构与原型  1.1 CPU流水线  【问题1】MIPS五级流水线是什么样的?  答MIPS五级流水线是阐释CPU流水线技术的**简化模型,也是面向应届生和初级工程师的常见面试题。该流水线包含取指(instruction fetch,IF)阶段、指令解码(instruction decode,ID)阶段、指令执行(instruction execution,EX)阶段、内存访问(memory access,MEM)阶段、回写(write back,WB)阶段[1]。  1.IF  IF阶段可用如下公式概括:  IR<-Mem[PC]  PC <-PC+4  其中,PC(program counter)表示程序计数器(或下一条指令的地址);IR(instruction register)表示存储待执行的指令。在此阶段,CPU根据PC值获取指令,同时PC会自动指向下一条指令(假设每条指令占4字节)。  2.ID  ID阶段可用如下公式概括:  A<-Regs[IR[10:6]]  B<-Regs[IR[15:11]]  Imm<-IR[15:0]  其中,A和B为操作数;Imm为立即数;Regs为寄存器文件。  在这一级,CPU使用IR[10:6]和IR[15:11]作为寄存器索引从寄存器文件 中读取操作数,或从IR[15:0]中提取立即数。  3.EX  EX阶段可用如下公式概括:  ALU输出<-A+Imm(计算内存操作的有效内存地址)  ALU输出<-A op B(寄存器间操作)  ALU输出<-A op Imm(寄存器与立即数间操作)  ALU输出<-PC+Imm(计算分支指令的目标地址)  其中,op是指令定义的某种运算操作。  在此阶段,ALU可用于计算内存操作的有效地址、执行寄存器间或寄存器 与立即数之间的运算操作,或计算分支指令的目标地址。分支条件的判定也在 此阶段完成。  4.MEM  MEM阶段可用如下公式概括:  LMD<-MEM[ALU输出](内存加载)  MEM[ALU输出]<-B(内存存储操作)if(条件满足)PC<-ALU输出else PC<-PC+4  其中,LMD是流水线寄存器,用于暂存从内存加载的数据。  在此阶段将执行内存加载/存储操作。分支操作最终也在此周期内完成。若EX阶段判定的分支条件成立,则将PC更新为EX阶段ALU输出的目标地址,实现程序的跳转;否则程序继续顺序执行,PC自动指向下一条指令(PC+4)。  5.WB  WB阶段可通过如下公式概括:  Regs[IR[20:16]]<-ALU输出(寄存器间操作)  Regs[IR[15:11]]<-ALU输出(寄存器与立即数间操作)Regs[IR[15:11]]<-LMD(内存加载)  在此阶段,最终结果写回寄存器文件。对于寄存器间操作,将ALU运算 结果写人IR[20:16]指定的目标寄存器;对于寄存器与立即数间操作,将ALU  运算结果写人IR[15:11]指定的目标寄存器;对于内存加载,将从内存读取的 数据(LMD)写人IR[15:11]指定的目标寄存器。  结论:MIPS五级流水线是硬件工程师面试的**知识。面试官通常期望 应聘者能够透彻理解流水线每个阶段的具体功能。  【问题2】流水线冒险及解决方案——基于MIPS五级流水线的案例 分析  答CPU流水线技术虽然能提升吞吐量并实现更高的时钟频率,但并非没 有代价。当多条指令并行执行时,CPU设计者必须解决以下三类冒险:  ?结构冒险(structural hazards)。  ?数据冒险(data hazards)。  ?控制冒险(control hazards)。  本节将详细讨论这些冒险,并结合MIPS五级流水线进行案例研究[1 ]。  1.结构冒险  结构冒险源于硬件资源竞争一当多条指令试图同时访问同一组硬件资源 时就会导致冲突问题的产生。这些资源包括寄存器文件和内存资源。  同一时钟周期内,ID阶段指令需要读取寄存器文件,而WB阶段指令需 要写人寄存器文件。若寄存器文件只有一个端口,则会发生结构冒险。面对这 样的问题,可以将时钟周期划分为前半周期(读操作)和后半周期(写操作)来解决,而更优的方案是为寄存器文件配置*立的读写访问端口。  同一时钟周期内,IF阶段需要从内存读取指令,而同时MEM阶段需要加 载/存储数据,若指令和数据共享同一存储器,则会发生冲突。面对这样的问题,可以采用分离的指令存储器和数据存储器来解决。在现代的计算机体系结构中,这几乎是默认的设计方案一CPU中通常配置*立的L1指令缓存和L1数据缓存。  2.数据冒险  数据冒险发生在试图访问尚未有可用数据时。数据冒险共有三种类型:  ?写后读(RAW)。  ?读后写(WAR)。  ?写后写(WAW)。  在这三种数据冒险中,只有RAW表示真正的数据依赖关系,其余两种仅为名称依赖。在MIPS五级流水线中,WB阶段始终位于ID阶段之后,因此 WAR和WAW在此情况下不会发生。  RAW冒险可能发生在以下程序中:  R3<-R1+R2  R5<-R3+R4  **条指令的结果尚未写人寄存器文件,但紧随其后的第二条指令试图立即使用该结果。如果第二条指令尝试从寄存器文件中获取R3的值,其计算结 果将是不正确的。  一种称为“转发”的技术可以解决此问题。ALU可以直接将其输出传递到输人,而非从寄存器文件中获取R3的值,从而第二条指令能够立即使用更新后的R3值。  需要注意的是,“转发”并不能解决所有RAW冒险。例如:  R3<-MEM[addr]  R5<-R3+R4  R3的值需等到MEM阶段结束后才可用,因此直接将ALU的输出传递到输人无助于第二条指令的正确执行。第二条指令需要暂停一个周期,以便R3的值能够从MEM阶段转发过来。  3.控制冒险  控制冒险发生在CPU试图在分支条件计算完成之前做出分支决策时。以下是几种处理分支和控制冒险的方法:  (1)我们可以暂停分支指令后的指令,直到分支条件确定。这意味着在分支指令到达MEM阶段之前,下一条指令无法执行,从而引人2个周期的停顿。  (2)如果能在ID阶段(而非EX阶段)完成分支判定,则只需1个周期 的停顿。这需要在ID阶段增加额外的ALU以提前计算条件,避免ID和EX阶段的结构冒险。但这种方法可能引发新的RAW冒险,例如:  R3<-R1+R2  BEZ R3  分支指令需要在之前的指令后立即使用R3的值,由于R3的值要到EX阶 段结束时才可用,因此分支前的2周期停顿仍然无法避免。  (3)为了填补分支判定完成前的停顿周期,可以采用“延迟槽”技术。延迟槽中的指令总是会被执行,但这需要更复杂的编译器支持。编译器必须理 解程序上下文,以确保填人延迟槽的指令不会破坏程序的逻辑。  (4)分支预测可用于推测执行指令,但需要CPU具备预测错误时的恢复 能力(如回滚机制)。  结论:*直接的解决方案是等待(停顿),但这会降低性能,违背流水线设计的初衷。上述技术(停顿、分支判定、延迟槽、分支预测)可分别用于应对不同类型的冒险。  【问题3】能否任意增加CPU流水线的深度?  答流水线技术是提高CPU吞吐量和指令级并行性的常用方法。那么,能否任意增加流水线的深度?简单回答是:不行。  这是一个开放性问题,建议面试者从以下几个方面展开回答:  (1)流水线的各个阶段必须保持平衡,否则会出现瓶颈。通常,流水线越 深,设计均衡的难度越大。  (2)更深的流水线需要更多的硬件支持,例如,更多的流水线级间寄存 器,以及更大的重排序缓冲(ROB)以支持精确中断和硬件推测执行。  (3)流水线需处理结构冒险、数据冒险和控制冒险,流水线越深,控制 逻辑越复杂。  (4)控制冒险会使流水线刷新,导致实际性能难以达到理论峰值。  (5)数据冒险可能阻塞后续操作,限制指令级并行性的发挥。  (6)深流水线在物理设计上面临诸多问题,例如,时钟树平衡(clock tree balancing)、时钟偏差(clock skew),以及复位信号布线(reset tree routing 等。  (7)流水线越深,单条指令的执行延迟(从取指到完成的总周期数)越长。  (8)加深流水线的初衷是通过增加级数来提高时钟频率和吞吐量,但工 艺制程决定了频率的上限。超过一定深度后,继续增加流水线级数无法带来性能提升,反而可能降低效率。

 

 

書城介紹  | 合作申請 | 索要書目  | 新手入門 | 聯絡方式  | 幫助中心 | 找書說明  | 送貨方式 | 付款方式 香港用户  | 台灣用户 | 海外用户
megBook.com.hk
Copyright © 2013 - 2026 (香港)大書城有限公司  All Rights Reserved.