新闻详情

新闻详情

首页 / 资讯中心 / 详情

计算机408组成原理:DMA方式核心考点与真题解析

发布时间:2026/9/28 19:51:08来源:尧图网络
计算机408组成原理:DMA方式核心考点与真题解析
1. 为什么DMA值得单独拎出来讲如果你正在准备计算机408统考或者本科学计算机组成原理这门课I/O控制方式这一块大概率是你绕不过去的一道坎。程序查询、中断驱动、DMA、通道这四种方式里DMA几乎是每年选择题的常客偶尔还会在大题里跟总线、存储器、中断嵌套混在一起考。我当年第一次学DMA的时候脑子里全是问号为什么需要一个专门的控制器CPU把总线让出去之后怎么再拿回来周期挪用到底挪的是哪个周期后来做题做多了、也翻了不少教材唐朔飞版、白中英版都啃过才慢慢把这条线捋清楚。这篇内容就是把我自己对DMA方式的理解、做题时踩过的坑、以及实际考试中容易混淆的点完整地梳理一遍。不管你是零基础刚接触I/O系统还是已经看过一遍书但做题总出错我都尽量用最直白的方式讲清楚。核心关键词就几个计算机408、计算机组成原理、DMA、I/O设备、信息传送。你把这几个词吃透了这一章基本就稳了。先说结论DMA的本质是让数据在内存和I/O设备之间直接搬运不经过CPU的寄存器。CPU只负责在开始的时候告诉DMA控制器“从哪搬到哪、搬多少”剩下的搬运工作DMA控制器自己完成搬完了再通知CPU一声。就这么简单一个思路但它带来的连锁反应——总线控制权的转移、CPU访存冲突、周期挪用和停止CPU访存两种模式的取舍——才是考试真正爱考的地方。2. DMA方式的核心设计思路拆解2.1 从“CPU亲自搬”到“找个搬运工”要理解DMA为什么会出现得先看看它之前的方式有什么问题。程序查询方式下CPU不断轮询设备状态设备没准备好就一直等CPU时间全浪费在等待上。中断方式好一些设备准备好了主动打断CPU但每次中断只能传一个字或几个字传完CPU还得执行中断服务程序把数据从I/O接口读到CPU寄存器再写到内存。你想想如果是要从磁盘读1MB的数据按中断方式一个字一个字地传CPU得被打断多少次每次中断还有保存现场、恢复现场的开销效率极低。DMA的思路就很直接既然CPU在数据搬运这件事上只是个“二传手”那干脆把这个二传手去掉让数据直接从设备到内存。CPU只需要做两件事——初始化DMA控制器告诉它源地址、目的地址、传送长度、传送方向以及在传送结束后处理一下“善后工作”比如检查有没有错误、决定下一步做什么。中间的搬运过程CPU完全不参与。这个设计的好处是显而易见的数据传送速度不再受CPU指令执行速度的限制而是取决于内存和I/O设备本身的速度。对于磁盘、网卡这类高速设备来说这个提升是质的飞跃。2.2 DMA控制器的内部结构到底长什么样考试里经常考DMA控制器的组成部件很多人死记硬背容易混。我用一个类比帮你记把DMA控制器想象成一个“快递站”。内存地址寄存器AR相当于快递单上的“收件地址”记录当前要读写的内存单元地址。每传一个字这个地址会自动加一或减一。字计数器WC相当于“包裹数量”记录还有多少数据没传。每传一个字减一减到零就表示传完了。数据缓冲寄存器DR相当于“临时存放点”数据在设备总线和系统总线之间传递时暂时存在这里。设备地址寄存器DAR记录I/O设备的地址告诉DMA控制器跟哪个设备打交道。控制逻辑相当于“调度员”负责协调整个传送过程产生DMA请求、总线请求等信号。状态/控制寄存器存放DMA的工作状态和控制信息CPU通过它来初始化和查询DMA。这些部件里AR和WC是考试最爱考的。因为计算题经常让你算传了N个字之后AR和WC的值分别是多少。记住一个原则AR和WC的初始值由CPU在初始化阶段写入传送过程中由DMA控制器硬件自动修改传送结束后WC为0或某个特定值取决于具体实现AR指向最后一个数据的下一个地址。2.3 DMA与中断的本质区别很多人学完DMA之后脑子里跟中断搅成一团。我用一句话帮你区分中断是“程序切换”DMA是“数据搬运”。中断方式下设备准备好数据后向CPU发中断请求CPU暂停当前程序跳转到中断服务程序去处理数据。这个过程涉及程序计数器的保存和恢复、现场的保护开销不小。而且中断服务程序里还是要用CPU指令来搬数据本质上还是CPU在干活。DMA方式下设备准备好数据后向DMA控制器发DMA请求DMA控制器再向CPU发总线请求。CPU响应后让出总线控制权DMA控制器直接控制总线完成数据传送。整个过程不打断CPU当前执行的程序除非CPU也要访存产生冲突不需要保存现场数据传送由硬件完成。这里有一个关键点DMA请求和中断请求是两回事。DMA请求是在数据传送开始前由设备向DMA控制器发出的中断请求是在DMA传送结束后由DMA控制器向CPU发出的用来通知CPU“活干完了”。考试里经常把这两个信号混在一起考你得看清楚题目问的是哪个阶段。3. DMA的三种传送方式与总线控制权转移3.1 停止CPU访存最简单但最浪费这种方式下DMA控制器向CPU发出总线请求后CPU在当前总线周期结束后让出总线控制权DMA控制器独占总线直到整块数据传送完毕才把总线还给CPU。优点是控制简单DMA控制器不需要复杂的仲裁逻辑。缺点是CPU在DMA传送期间完全不能访存如果传送的数据量很大CPU就被“冻住”了。你想想传1MB数据按这种方式CPU得等多久所以这种方式一般只用在数据传送率很高的设备上比如硬盘的块传送。考试里如果考这种方式通常会问你“CPU在DMA传送期间能否响应中断”。答案是能响应中断但不能访存。因为中断响应不需要访存中断隐指令是硬件完成的但中断服务程序如果要访存就会被阻塞。这个点很容易错记牢。3.2 周期挪用周期窃取考试最爱考的方式这种方式下DMA控制器每次只“偷”一个或几个内存周期来传数据传完就把总线还给CPU。具体来说当I/O设备准备好一个数据字后DMA控制器向CPU发总线请求CPU在当前总线周期结束后让出一个总线周期给DMA用DMA传完这个字后CPU继续访存。这种方式的好处是CPU和DMA交替使用总线CPU不会长时间被阻塞。缺点是DMA控制器需要更复杂的仲裁逻辑而且每次传送都要申请一次总线有一定的开销。这里有一个非常重要的考点周期挪用方式下DMA传送和CPU访存可能发生冲突。当CPU和DMA同时请求访存时通常DMA的优先级更高因为I/O设备的数据传送有实时性要求如果数据没及时取走可能会丢失。CPU可以等设备不能等。这个优先级关系在选择题里经常考。另外周期挪用方式下DMA每传一个字需要“挪用”一个内存周期。如果内存周期是0.5微秒传1000个字需要的时间就是1000×0.5微秒500微秒。但实际中还要考虑DMA控制器的开销所以实际时间会略长。考试里如果让你算一般就按理想情况算。3.3 交替访存CPU和DMA各走各的这种方式下把CPU的工作周期分成两个时间片一个给CPU访存一个给DMA访存两者交替使用内存。这样CPU和DMA都不需要申请总线也不会发生冲突。优点是不需要总线仲裁控制简单CPU和DMA都能按自己的节奏工作。缺点是内存的利用率降低因为每个周期只能有一个设备访存如果CPU或DMA某段时间不需要访存那个时间片就浪费了。而且这种方式对CPU和DMA的时序配合要求很高实际中用得不多。考试里如果考这种方式通常会问你“CPU和DMA是否会发生冲突”。答案是不会因为两者交替使用内存从时间上就错开了。但要注意这种方式下CPU的访存速度会受到影响因为它的访存周期被拉长了。3.4 三种方式的对比与选型逻辑对比维度停止CPU访存周期挪用交替访存CPU是否被阻塞完全阻塞部分阻塞每次一个周期不阻塞总线控制权DMA独占交替使用固定分配控制复杂度简单中等较复杂内存利用率高DMA独占时高低适用场景高速块设备大多数DMA场景特定时序系统选型逻辑其实很简单如果设备速度极高、数据量极大用停止CPU访存如果设备速度中等、需要兼顾CPU效率用周期挪用如果系统对时序有严格要求、不想搞总线仲裁用交替访存。考试里最常考的是周期挪用因为它是实际中用得最多的方式。4. DMA传送的完整实操流程4.1 初始化阶段CPU给DMA控制器“下订单”DMA传送开始前CPU需要通过程序对DMA控制器进行初始化。具体来说CPU会执行一段初始化程序把以下信息写入DMA控制器的寄存器设备地址告诉DMA控制器跟哪个设备通信写入DAR。内存起始地址数据要读到内存的哪个位置或者从内存的哪个位置写出去写入AR。传送字数一共要传多少个字写入WC。传送方向是读设备到内存还是写内存到设备写入控制寄存器。传送模式是周期挪用还是停止CPU访存写入控制寄存器。启动命令向DMA控制器发启动信号DMA开始工作。这段初始化程序是CPU执行的所以会占用CPU时间。但相比中断方式下每次传送都要CPU参与这点开销可以忽略不计。注意初始化阶段写入的AR值是内存起始地址WC值是传送字数。传送过程中AR和WC会自动修改所以如果你在传送过程中读这两个寄存器读到的值是当前值而不是初始值。考试里经常考这个细节。4.2 数据传送阶段DMA控制器自己干活初始化完成后DMA控制器开始等待设备的DMA请求。当设备准备好一个数据字后会向DMA控制器发DMA请求信号。DMA控制器收到请求后向CPU发总线请求信号HOLD。CPU在当前总线周期结束后发出总线响应信号HLDA让出总线控制权。DMA控制器获得总线控制权后开始执行数据传送从设备读取一个数据字放入DR。把DR中的数据写到AR指向的内存单元。AR自动加一或减一WC自动减一。释放总线CPU继续访存。重复上述过程直到WC减到0。如果是停止CPU访存方式DMA控制器在整块数据传送完毕后才释放总线。如果是周期挪用方式每传一个字就释放一次总线。这里有一个容易混淆的点DMA控制器的总线请求信号和中断请求信号是分开的。总线请求用HOLD/HLDA这一对信号中断请求用INTR/INTA这一对信号。考试里如果画时序图你得看清楚是哪个信号。4.3 传送结束阶段DMA通知CPU“活干完了”当WC减到0时DMA控制器知道数据传送完毕会向CPU发中断请求信号。CPU响应中断后执行中断服务程序做以下事情检查DMA控制器是否有错误比如传送过程中设备出错。决定下一步操作比如继续传送下一块数据或者处理已传送的数据。如果需要继续传送重新初始化DMA控制器。这个中断服务程序是DMA传送结束后唯一需要CPU参与的部分。相比中断方式下每次传送都要CPU参与DMA方式下CPU的参与度大大降低。实操心得考试里经常考“DMA传送结束后CPU执行的是什么”。答案是中断服务程序不是DMA控制器的程序。DMA控制器是硬件没有程序。CPU执行的是中断服务程序用来处理DMA传送的善后工作。4.4 一个完整的计算示例假设有一个DMA控制器采用周期挪用方式内存周期为0.5微秒DMA控制器的开销为0.1微秒/字。现在要从磁盘读取1000个字到内存内存起始地址为1000H。求传送1000个字需要多少时间传送结束后AR和WC的值分别是多少解答每个字的传送时间 内存周期 DMA开销 0.5 0.1 0.6微秒。1000个字的总时间 1000 × 0.6 600微秒。AR的初始值为1000H每传一个字加一传1000个字后AR 1000H 1000 1000H 3E8H 13E8H。WC的初始值为1000每传一个字减一传完后WC 0。这个计算题是考试里最常见的类型关键是要记住AR和WC的自动修改规则以及DMA开销是否计入传送时间题目如果给了就要算没给就不算。5. 常见问题与排查技巧实录5.1 DMA和中断的优先级谁更高这个问题考试里经常考很多人搞混。答案是DMA请求的优先级高于中断请求。原因很简单DMA请求对应的是数据传送如果数据没及时取走可能会丢失中断请求对应的是程序切换晚一点处理问题不大。所以当DMA和中断同时请求时CPU先响应DMA。但要注意DMA请求和中断请求是在不同阶段发生的。DMA请求发生在数据传送开始前中断请求发生在数据传送结束后。所以严格来说两者不会同时发生。但如果系统中有多个DMA设备和多个中断源就需要考虑优先级仲裁了。5.2 周期挪用方式下DMA每传一个字要挪用几个内存周期这个问题要看具体实现。如果DMA控制器和CPU共用一套总线那么DMA每传一个字需要一个内存周期来读设备数据一个内存周期来写内存数据总共两个内存周期。但如果DMA控制器内部有数据缓冲可以先把数据读到缓冲区再一次性写入内存那么可能只需要一个内存周期。考试里如果题目没说清楚一般默认DMA每传一个字挪用一个内存周期。如果题目给了DMA控制器的具体结构就要根据结构来算。5.3 DMA传送过程中CPU能否响应中断这个问题的答案取决于DMA的传送方式停止CPU访存方式CPU在DMA传送期间不能访存但可以响应中断。因为中断响应不需要访存但中断服务程序如果要访存就会被阻塞。周期挪用方式CPU在DMA传送期间可以正常访存也可以响应中断。因为DMA只是偶尔挪用一个周期CPU大部分时间都能正常工作。交替访存方式CPU和DMA交替使用内存CPU可以正常响应中断。考试里如果考这个点通常会结合具体场景问。比如“在DMA传送期间CPU能否响应键盘中断”答案是能因为键盘中断的优先级虽然低但CPU在DMA传送期间仍然可以响应中断除非DMA传送方式完全阻塞了CPU。5.4 DMA控制器的AR和WC在传送过程中如何变化这是考试里最容易出错的地方。记住以下规则AR初始值为内存起始地址。如果是读操作设备到内存每传一个字AR加一如果是写操作内存到设备每传一个字AR加一。总之AR总是朝着“下一个要访问的内存地址”方向变化。WC初始值为传送字数。每传一个字WC减一。当WC减到0时表示传送完毕。如果题目问“传送结束后AR的值”答案是“初始值 传送字数”假设是加一模式。如果题目问“传送结束后WC的值”答案是0。避坑技巧有些题目会故意把AR和WC的初始值设成非零值然后问你传送过程中的某个时刻AR和WC的值。这时候你要根据已经传送的字数来计算而不是直接用初始值。比如初始AR1000HWC100已经传了30个字那么当前AR1000H30101EH当前WC100-3070。5.5 DMA方式下数据传送是否经过CPU这个问题看似简单但考试里经常有人答错。答案是不经过CPU。DMA方式下数据直接在设备和内存之间传送不经过CPU的寄存器。CPU只在初始化和结束时参与中间的数据搬运完全由DMA控制器硬件完成。但要注意数据传送过程中会经过DMA控制器的数据缓冲寄存器DR。所以严格来说数据经过了DMA控制器但没有经过CPU。考试里如果问“数据是否经过CPU”答“不经过”如果问“数据是否经过DMA控制器”答“经过”。5.6 DMA方式与通道方式的区别通道方式可以看作是DMA方式的升级版。DMA控制器只能控制一台或几台设备而通道可以控制多台设备并且能执行通道程序。通道有自己的指令系统可以执行更复杂的I/O操作。DMA方式下CPU需要初始化DMA控制器而通道方式下CPU只需要启动通道通道自己执行通道程序完成一系列I/O操作。考试里如果考这个点通常会问“DMA和通道的主要区别是什么”。答案是DMA控制器是硬件通道是处理器。DMA控制器只能做简单的数据搬运通道可以执行程序控制多台设备。6. 从408真题看DMA的考法6.1 选择题的常见套路408真题里DMA相关的选择题主要有以下几种考法考法一判断DMA传送过程中CPU的状态。比如“在DMA传送期间CPU处于什么状态”答案是“暂停访存”或“继续执行程序”取决于DMA的传送方式。考法二计算DMA传送的时间。比如“采用周期挪用方式内存周期为0.5微秒DMA开销为0.1微秒/字传1000个字需要多少时间”答案是600微秒。考法三判断DMA和中断的优先级。比如“当DMA请求和中断请求同时发生时CPU先响应哪个”答案是DMA。考法四判断DMA控制器的组成部件。比如“DMA控制器中不包括以下哪个部件”通常会把CPU的部件混进来考。考法五判断DMA传送结束后CPU执行什么。答案是中断服务程序。6.2 大题的常见考法DMA在大题里通常不会单独考而是跟总线、存储器、中断一起考。比如给出一个系统框图让你分析DMA传送过程中总线控制权的转移过程。给出DMA控制器的寄存器初值让你计算传送结束后各寄存器的值。结合中断嵌套让你分析DMA传送期间CPU能否响应更高级的中断。这类题目综合性较强需要你把DMA的知识点跟其他章节串起来。我的建议是先把DMA的基本流程背熟然后多做几道综合题找到知识点之间的连接点。6.3 24年45题的DMA考点分析24年45题考的是DMA方式下CPU和DMA控制器的交互过程。题目给出了一个具体的场景让你分析DMA控制器在传送过程中发出的信号和CPU的响应。这道题的关键是搞清楚DMA请求、总线请求、中断请求这三个信号的区别和发出时机。DMA请求是设备向DMA控制器发出的表示设备准备好了一个数据字。总线请求是DMA控制器向CPU发出的表示DMA控制器需要总线控制权。中断请求是DMA控制器向CPU发出的表示DMA传送结束。这三个信号的发出顺序是DMA请求 → 总线请求 → 数据传送 → 中断请求。这道题还考了一个细节CPU在响应总线请求后是在当前总线周期结束后让出总线而不是立即让出。这个细节很容易被忽略但考试里经常考。7. 我踩过的坑和给你的实操建议7.1 别把DMA请求和中断请求搞混我刚开始学的时候总是把DMA请求和中断请求当成一回事。后来做题才发现这两个信号完全不同。DMA请求是设备发给DMA控制器的中断请求是DMA控制器发给CPU的。DMA请求发生在数据传送前中断请求发生在数据传送后。考试里如果画时序图你一定要看清楚信号是从哪发到哪的。7.2 周期挪用方式下DMA的优先级一定高于CPU这个点我一开始也不理解为什么DMA的优先级比CPU高后来想明白了CPU访存晚一点没关系程序可以等但I/O设备的数据如果不及时取走可能会被下一个数据覆盖导致数据丢失。所以DMA的优先级必须高于CPU。这个逻辑在考试里经常考记住“设备等不起CPU等得起”就行了。7.3 计算题要注意单位换算DMA的计算题里时间单位经常是微秒、纳秒频率单位经常是MHz、GHz。我见过很多同学因为单位换算错误丢分。比如内存周期是0.5微秒DMA开销是0.1微秒/字传1000个字的时间是600微秒不是600纳秒。考试里如果题目给的是频率比如内存频率是2MHz那么内存周期是1/2MHz0.5微秒。这个换算一定要熟练。7.4 初始化阶段和传送阶段的区分DMA传送分为初始化阶段、数据传送阶段、传送结束阶段。初始化阶段CPU执行程序数据传送阶段DMA控制器硬件工作传送结束阶段CPU执行中断服务程序。考试里经常问“某个操作发生在哪个阶段”你要能准确判断。比如“CPU写入AR和WC”发生在初始化阶段“AR和WC自动修改”发生在数据传送阶段“CPU检查错误”发生在传送结束阶段。7.5 多做真题找到出题规律DMA这一块408真题里翻来覆去就那几个考点。你把近十年的真题里DMA相关的题目都做一遍就会发现出题规律很明显。我的建议是先把教材上的DMA章节看两遍然后做真题做完真题再回头看教材这时候你会发现很多之前没注意到的细节。真题里反复出现的考点就是你必须掌握的核心考点。最后再分享一个小技巧如果你在考场上遇到DMA的题目先判断它考的是哪个阶段初始化、传送、结束然后回忆那个阶段的关键操作和信号。大部分题目都能用这个思路解出来。DMA这一章不难但细节多需要你耐心地把每个知识点都过一遍。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

基于微信小程序的社区志愿活动系统的设计与实现 2026/9/28 21:23:52

基于微信小程序的社区志愿活动系统的设计与实现

摘 要 在基层治理精细化与公益服务数字化的发展趋势下,传统社区志愿管理模式的弊端日益凸显。活动招募依赖线下渠道,覆盖面窄且效率低,志愿时长统计、人员技能匹配全靠人工,易出现错漏,居民需求与志愿资源也难以精准对…

阅读更多 →
深度学习是大模型的操作系统,不是工具箱 2026/9/28 21:23:52

深度学习是大模型的操作系统,不是工具箱

1. 这不是“AI大模型之深度学习”——而是一场被严重误读的技术关系澄清很多人看到“AI大模型之深度学习”这个标题,第一反应是:“哦,这是讲怎么用深度学习去训练大模型?”或者“这是深度学习在大模型里的应用案例?”—…

阅读更多 →
Simulink n-D查表插值方法选型指南:精度、实时性与嵌入式部署的工程权衡 2026/9/28 21:23:52

Simulink n-D查表插值方法选型指南:精度、实时性与嵌入式部署的工程权衡

1. 为什么在Simulink里认真对待n-D Lookup Table的插值方法?——这不是选“好看”的事,是选“不翻车”的事你在Simulink里搭一个电机控制模型,用n-D Lookup Table查表获取转矩-电流-转速三维关系;或者在电池管理系统仿真中&#x…

阅读更多 →
基于CNN的人脸识别疲劳检测系统:SSD+VGG16源码解析与工程实战 2026/9/28 21:23:51

基于CNN的人脸识别疲劳检测系统:SSD+VGG16源码解析与工程实战

简介:面向计算机相关专业毕业设计,基于卷积神经网络人脸识别驾驶员疲劳检测与预警系统的完整源码与配套数据集,由大四学生完成,经导师指导并认可,项目评审九十九分,代码完整可运行,适合正在做毕…

阅读更多 →
2026年9月论文双降工具合集:哪些网站同时提供降重和降AI? 2026/9/28 21:23:45

2026年9月论文双降工具合集:哪些网站同时提供降重和降AI?

2026年9月论文双降工具合集:哪些网站同时提供降重和降AI? 知网AIGC检测系统又更新了,AI率变高,网上的各种免费降AI率提示词试了一个又一个,AIGC疑似度还是没变化? 学校要求AI率低于20%,否则会…

阅读更多 →
不花钱降低论文AI率,用免费降AI率软件还是免费降AI提示词? 2026/9/28 21:23:44

不花钱降低论文AI率,用免费降AI率软件还是免费降AI提示词?

不花钱降低论文AI率,用免费降AI率软件还是免费降AI提示词? 搜到一段降AI提示词,复制给聊天助手,返回一份很流畅的新稿;再看到免费降AI软件,又不知道是否应该把同一篇论文交过去。两种方式都不想花钱&#…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉