计算机原理与嵌入式系统笔记:第七篇
存储管理单元
存储管理单元(Memory Management Unit, MMU)在CPU和物理主存之间进行地址转换,将地址从逻辑空间映射到物理空间,转换过程也称为内存映射。
DSP用于计算密集型任务,通常不使用MMU。
物理地址(physical address):用于内存芯片级的单元寻址,与实际的RAM单元对应。
逻辑地址(logical address):程序的抽象地址空间,不与实际的RAM单元对应
地址转换方法
两种基本的地址转换方法:
分段:支持较大的、大小可以不等的内存区域。
起始地址+大小
分页:支持较小的、大小相等的内存区域。
段页式寻址模式:将每个段分成页并且其地址转换分成两步的方法来建立。
段地址转换过程
分段寄存器:记录当前的活动段,寄存器存储当前活动段的基地址。
逻辑地址:来自于指令,作为相对段基址的偏移量。
物理地址:将段基址和偏移量相加
范围检查:检查物理地址是否超过段的上限
需要在分段寄存器中增加一项存储内容,记录段长。
用段长和偏移量进行比较,来判断物理地址的合法性
页地址转换过程
逻辑地址分为两部分:页号和页内 ...
计算机原理与嵌入式系统笔记:第六篇
最烦的一节,必考。
高速缓存
局部性原理
局部性原理是存储系统层级构成的基础。
时间局部性:当前被访问的数据有可能很快再次被访问。就比如刚拿了一本书到书桌上查阅,可能会很快地再次查阅它。
空间局部性:当前被访问数据地址相近的数据有可能很快被访问。就比如找到一本关于ARM的书籍时,也许紧挨着它的另一本书籍也是需要的,因为图书馆会将相同主题的书放在同一书架上。
程序为何会具有局部性?
程序中的循环结构,呈现出时间局部性
程序中的顺序执行指令,呈现出空间局部性
访问时间与缓存未命中
强制性未命中(compulsory miss):
也称为冷未命中(cold miss),
发生在存储单元第一次被访问时。
容量未命中(capacity miss):
由于工作集过大造成的缓存未命中。
冲突未命中(conflict miss):
由于两个地址映射到高速缓存的同一个单元,缓存存入时互相挤占对方导致的未命中。
平均内存访问时间计算公式
一级缓存:
tav=htcache+(1−h)tmaint_{av}=ht_{cache}+(1-h)t_{main}
tav=htc ...
计算机原理与嵌入式系统笔记:第五篇
必考的
流水线
流水线无法减少每个任务的延迟。
流水线中多个任务同时执行,可以提高整个工作的吞吐率。
流水线的速率受限于速度最慢的一级。木桶效应,小子
加速比
流水线的加速比:采用流水线方式执行之后,吞吐量提高的比例。
流水线的最大加速比:最大加速比=流水线级数(最好情况下)
流水线各级延时不均衡会降低加速比。
进/出流水线的延时降低了加速比。任务数足够多时,可以忽略进/出流水线延时对加速比的影响。
ARM7的三级流水线
ARM使用三级流水线:
取指:从存储器中获取指令代码到指令流水线。
译码:指令译码,通过控制信号操作数据通路准备执行。
执行:指令获得数据通路“使用权”:读寄存器, 移位操作, ALU运算和写回。
每一级的结果存储在寄存器中。
练习1
[{"url":"https://webp.esing.dev/img/image-20241016124012384_20241016_1240.png","alt":""},{"url":"https://webp.esing.dev/img/image-2024061216222073 ...
模拟集成电路设计 考试复习提纲
倒序列举考点(因为老师就是倒序讲的)
考试题型
填空/判断题 10~20'
简答题,可能有简单计算 10~20' “怎么做校准?”
推导题,聚焦基本推导,过程较长
计算题,两道
去年平均分:75
中位数:70
第九章 信号源发生器
基本概念、反馈系统如何震荡、巴特豪斯准则
文氏桥如何震荡及自动振幅控制(Automatic Amplitude Control)、多谐振荡器工作原理(正负反馈时域)
环形振荡器原理及传输函数、LC Tank、Q值、如何等效为并联电阻
单端口振荡器原理、结构图、科二皮子(Colpitts)振荡器和皮尔斯(Pierce)振荡器
第八章 非线性电路
比较器及其通断条件、上下拉(Pull Up&Down)电阻、集电极输出和发射极输出区别、过驱动电压(Overdrive)概念、比较器常见应用(脉冲调制、窗口探测器等)
反偏齐纳二极管作用
施密特触发器及其原理(正反馈)、同向与反向电路结构、迟滞比较器常见应用(减小纹波等)、
半波整流和全波整流、二极管和反馈通路、半波整流带来的缺点及电压限制二极管、全波整流关系式
交流直流转换器、极值检测器和其非理想性
...
计算机原理与嵌入式系统笔记:第四篇
多寄存器L/S指令
LDR和STR指令仅能load/store一个32位字
ARM可以在一条指令中load/store 16个寄存器中的一个任意数目的子集,如LDMIA指令。
LDM/STM
1234LDMIA STMIA Increment After 这里的增加/减少是相对于基地址使用前/后的LDMIB STMIB Increment Before LDMDA STMDA Decrement After 如:当使用LDMIA和STMIA指令时LDMDB STMDB Decrement Befor 基地址被使用后(After)增加(Increment)
同样可以使用!使多寄存器L/S指令的基地址自动变址。
如图,r9表示起始指针,r9'表示结束指针。
控制流指令
条件转移指令
B{L}{<cond>} <target address>
地址计算方式:先对指令中定义的24位偏移量进行符号扩展,左移两位形成字的偏移,然后将它加到程序计数器。
转移指令的范围大致为+/-32MB( ...
数字系统设计复习笔记:第十四篇
前言
文章内容可能有较多错误,仅供参考
考完了。
整体来说不算非常难,但要好好想想。我花了2个小时做完试卷,剩下的半个小时又看了一遍,纠正了一些语法错误。概念考察很多,但是没有很冷门的地方。但还是有不确定的题目。
下面列一些考试中觉得很迷惑/比较难的题目。
判断
Verilog向量最高位的下标一定比最低位下标大。
Verilog向量最左侧为MSB。
Verilog模块内每个变量都要独立声明。
简答
以下两端代码有区别吗?如果有,区别是什么?
1234567if (a > b) x = x + 1;else y = y + 1;case (a > b) 1'b1: x = x + 1; default: y = y + 1;endcase
代码题
三分频器(代码填空)
四位带同步复位端和进位输出的加减法计数器
Playwright加载Chrome扩展
前言
最近在使用Playwright写浏览器自动化。想安装一点常用的浏览器扩展,比如油猴、Header Editor啥的,结果拖进去一直提示无权限安装。查了下官方文档,依旧没有进展。
操作步骤
将要安装的插件后缀名改为zip并解压到独立文件夹;
在Playwright浏览器的启动参数指定插件路径:
12345678910111213141516e_path1 = "path/to/your/extracted/extension1"e_path2 = "path/to/your/extracted/extension2"chromium = playwright.chromiumself.context = chromium.launch_persistent_context( user_data_dir=utils.sub_folder(Folder.BROWSER_DATA), headless=False, proxy=proxy_object, ignore_default_args=["--en ...
数字系统设计复习笔记:第十三篇
前言
我一向是很讨厌形而上学的东西的。奈何考试确实会考概念,故整理一些可能考的简答题。
1-5
简述什么是硬件描述语言? 它的主要作用是什么?
答案硬件描述语言是一种专门用来描述电子电路的功能和行为的编程语言,它可以让工程师在不同的抽象层次上设计复杂的数字逻辑电路,如寄存器传输级(RTL)、行为级和逻辑门级等。
为什么说用硬件描述语言设计的数字逻辑系统具有最大的灵活性并可以映射到任何工艺的电路上?
答案因为硬件描述语言设计的数字逻辑系统主要是在RTL级和行为级,不涉及具体的门电路,因此不依赖工艺,且便于移植。
为什么并发性是 HDL 中的一个重要概念?
并发是 HDL 的一个特点,无法用原理图来建模。
并发允许进行自动综合。
并发允许逻辑仿真器显示有用的系统信息。
并发是对并行运行的真实系统进行建模的必要条件。
答案4
仿真是什么? 为什么要进行仿真?仿真可以在几个层面上进行? 每个层面的仿真有什么意义?
答案仿真是对电路模块进行动态的全面测试。
通过观测被测试模块的输出信号是否符合要求可以调试和验证逻辑系统的设计和结构准确与否,并发现问题及时修改。
仿真分为:前仿真,逻辑网 ...
计算机原理与嵌入式系统笔记:第三篇
ARM指令
采用Load-Store结构
固定长度(32bit)指令
三操作数指令格式
条件执行所有指令
一条指令可以装载或存储多个寄存器
ALU操作支持单周期n-bit移位
Load-Store结构
指令集中的数据运算:
不能对存储器中的数据直接进行操作
仅能处理寄存器中的值,而且总是将处理结果放回到寄存器中
对存储器中数据的操作:
仅能将存储器的值 加载(load) 到寄存器中
或将寄存器的值 存储(store) 到存储器中
ARM指令不支持“存储器-存储器”操作!
汇编格式
寄存器传送:
比较:
<opcode2>{<cond>} <Rn>, <shifter_operand>
<opcode2> := CMP | CMN | TST | TEQ
运算:
<opcode3>{<cond>}{S} <Rd>, <Rn>, <shifter_operand>
<opco ...
计算机原理与嵌入式系统笔记:第二篇
ARM指令系统
本课程讲解内容主要基于ARM7处理器
概述
记一下ARM的处理器组成
[{"url":"https://webp.esing.dev/img/image-20240422202917823_2024-4-22_2029_pcgei6p5p3.png","alt":"ARM处理器组成1"},{"url":"https://webp.esing.dev/img/image-20240422202940202_2024-4-22_2029_t8ve74awlo.png","alt":"ARM处理器组成2"}]
加载更多
编程模型
什么是编程模型?
编程模型(Programming Model) 是所有用户可见的寄存器的集合。
用户级程序使用的寄存器:
15个通用32位寄存器(r0~r14)
1个程序计数器PC(r15)
1个当前状态寄存器(CPSR,Current Program Status Register)
r0-r3用于参数传入。如果需要的参数超过4个,则将被置于栈中r11为帧指针寄存器(Frame Poi ...