复试热门问题回答
-
二战&工作?二战不是一个容易的抉择,更何况你还要准备本科毕设,未必能多出时间,也需要家人的经济支持,好好想清楚这个问题。
-
瓜大歧视双非吗?复试公平吗?瓜大在985里吸引力没那么高,生源没你想象那么好,想歧视的前提是他有的挑。
不会因为本科学校把初试高的同学刷走,基本上岸和初试排名有很大关系。复试相对公平,如果大家都是刚过线,老师选本校也能理解。
-
有必要报复试班吗?根据我和同届的经历,初试班有用,复试班作用不大,复试涵盖内容广。静下心来翻书复习,成功无捷径。
可以看看王道论坛里面的复试经验贴
http://www.cskaoyan.com/forum-109-1.html
-
简历方面,没有项目经历怎么办?本科大作业、阅读论文谈谈心得、或者这几个月重新学一个项目(搜C++ 校招 项目 推荐 之类的关键词)。
总之要和老师契合,他搞科研你就写自己科研经历(自己的贡献度写清楚,吹牛答不上提问就尴尬了),他搞开发多就突出自己的编程能力。
-
机器学习和XXX没学过需要买书吗?一般没学过的专业课,推荐看B站、Mooc网课、微信公众号上找,书比较厚,新手一般难坚持。
-
软件学生一定要跟软件老师?不是,部分计算机老师有软件招生名额,具体翻《招生专业目录》
-
今年是不是可能线上复试,还准备机试吗?没人敢保证,当然准备啦
复试总体安排
从时间上来说:
- 12月底考完初试
- 下一年2月底初试成绩公布,出分当天是发邮件联系导师的最佳时机
- 3月中旬调剂系统开放
- 3月下旬复试线、复试流程公布(一般在“xx学院复试方案”这份文件里)
- 4月初面试,过两天公布拟录取名单
- 5、6月本科毕设答辩(实习投简历)
- 7、8月暑假实习。最好争取下,去公司比自学好多了,以后读研导师说了算,想实习不容易;大公司不要应届生实习,可以试试小公司。
- 意味着大家复试的黄金时间是1月初-3月底,满打满算三个月吧,这三个月既要准备面试(很多本书),还要准备机试,准备实习机试。时间不算多,大家务必重视!
- 六级没过的好好准备大四下六月这次机会,西工大六级过了就能免修研究生英语课。
复试流程:
计算机学院
计算机线下复试
以19级为例,参考《2019年硕士研究生招生计算机学院复试工作方案》
考生总成绩计算公式:总成绩=初试总分/5*55%+复试成绩*45%
审核学生材料➡机试➡英语翻译➡心理测试➡体检➡分组线下面试➡C语言程序设计(跨考加试)
-
审核材料推荐考生提前准备:身份证复印件、准考证复印件、学生证复印件(应届)、学位证和毕业证复印件(往届)、成绩单原件、政审表原件、四、六级成绩单复印件。前面所提到的材料,如果有原件也准备好。(以当年文件为准,这里仅供参考)
- 英语翻译一般是走个流程,翻译难度较大,是从本专业的国外期刊杂志选取的,而且时间较短,对英语能力要求较高。基本就是走复试流程,此项不重要!
- 心理测试:对结果没有影响,但需要认真对待,不重要。
- 机试:机试不过复试必挂,就算是本校学生,老师也救不了你。5道题,一般会有2-3道数据结构的复杂题,一般做对1-2道题可保底,3-4道比较稳定。 大概能过线的同学就要积极准备机试,这是需要花时间的一项,认真完成西工大历年机试真题,如果时间还有富余,可上一些OJ网站进行刷题;近年来基本难度不大。
分组线下面试:
计算机面试一般由10名左右的导师组成(通常是一个系的),切记不能够慌乱,为什么选择这个系等。留意自己系喜欢问的特色问题。
注意:计算机导师的话语权重,以往是先报导师再安排面试的,你的竞争对手是同一个意向导师的学生。21级不分组了,不确定22的情况。
共同点:时间大约在10-20分钟左右,可以带上自己的荣誉证书和做过的项目及个人简历,作为自己的加分项。基本问题有英文介绍,是否读博,是否通过6级,是否党员,参加过那些项目,学过什么知识,为什么选择西工大。
计算机线上复试
以21级为例,参考《计算机学院2021年全国硕士研究生招生考试复试工作方案》
录取总成绩=初试成绩/5×0.65+复试成绩×0.35
复试比重下降,其实更公平了
复试总成绩=思想政治考核成绩*10%+专业外语水平考核成绩 *20%+专业综合能力考核成绩*70%
西工大计算机和软件都有机试部分,但由于疫情影响,20、21级均采用线上面试方式,因此取消了机试环节(好像跨考还有加试,具体形式未知),虽然权重占比不高,但不可否认,该环节非常重要,机试不合格没资格进面试;而网安没有机试内容。
20级线上是要求提前统计意向导师,然后分组面试。
21级一开始统计了,后来又说改规定,随机分组面试,抽题面试,线上面试好像老师手里有你的成绩单,对你有大概了解的。
线上面试基本流程:
- 先提问政治(死记硬背的知识 或开放性的时事点评):态度要端正,认真回答就好,最好答长点,占点时间,等老师要求你简略回答再停
- 英语环节,可能是自我介绍、英文问答(对xx学科怎么看待)、对着屏幕念文章、翻译屏幕文章
- 抽题面试:涉及方方面面,留到后面述说
软件学院
软件面试由软件学院+计算机学院(有软件招生名额)的老师共同来面,不要求提前联系导师,除了计算机学院的要求,还要重点复习《软件工程导论》。如果你能提前联系也不错。
软件学院线下复试
以19级为例,参考《软件与微电子学院2019年硕士研究生复试方案》
总成绩=初试成绩*50%/5+复试成绩*50%
复试成绩=外语水平测试成绩*0.2+综合素质面试成绩*0.2+专业知识笔试成绩*0.3 +实验技能考核成绩*0.3
审核学生材料➡体检➡机试➡心理测试➡软件工程笔试➡英语翻译➡分组线下面试➡C语言程序设计(跨考加试)
这里要强调一点,19级线下有笔试,大部分都是选考软件工程
在19级考研报名时,《2019年攻读全日制硕士学位研究生招生专业目录》有提到复试科目975,但是大纲找不到了。根据前人经验,考这门推荐复习张海藩老师的《软件工程导论(第5版)》
有意思的是,20级、21级、22级的专业目录已经去掉该项,表述改为“复试科目 974编程机试”,因此可能线下不会再有这个笔试了,但是面试可能会被问到,只是说准备的可以没那么细。
软件学院线上复试
以21级为例,参考《西北工业大学软件学院2021年硕士研究生招生考试复试工作方案》
录取总成绩=初试成绩/5×0.60+复试成绩×0.40
复试总成绩=思想政治考核成绩*10%+专业外语水平考核成绩 *20%+专业综合能力考核成绩*70%
软件没有要求一定要提前联系导师,你如果有意愿导师我也推荐你提前联系,毕竟热门老师永远不缺人。
网安学院
网安除了要准备上述内容外,还需要重点复习计算机网络、网络安全、密码学相关知识。具体我不太了解,期待网安同学补充。
联系导师的注意事项
重中之重!谈之前我们先简单聊聊研究生生活,你真的需要读研吗?
我身边读研的同学,可以分为几种类型:
- 本校保研生,普遍跟的老师比较好
- 要文凭,可能他本科学校去不了理想岗位,也可能是想报限定研究生的公务员岗位
- 跨考,想换一个专业
如果你本科学校还不错,最好想想自己为什么要读研,工作3年的工资不少了,春招还来得及。
从工作内容上看,可以划分为几种类型:
- 科研型:你的主要工作是阅读论文,组会上报告每周的工作,发论文,去算法岗/读博
- 开发型:完成老师接的公/私活,基本是用C++写的,C++就业没有Java那么广,基本是去大厂,腾讯要的多一些。推荐私下再学学Java
- 混合型:可能是发现不适合科研就转开发了,也可能是老师就没有区分,两种任务都会给你。
- 摸鱼型:老师放养,他自己也不接活让你做,你可能时间比较充裕,好好利用自己的时间,提升自己。
为什么开发型还要发论文?因为不经过小论文训练,毕设可能写不出来。以前发2篇EI可以免毕设盲评,现在好像要CCF B或者授权专利,难度上升了。
从时间上看,研一大家在上课,课下时间要完成大作业,大部分老师是不怎么逼研一的。研二上完成老师的要求,研二下继续完成,同时还要兼顾毕设。研二升研三暑假,实习找工作。研三上继续写毕设。
从上面可以看出,学生能给老师贡献的时间不多,所以普遍寒暑假会留学生,缩减假期。
老师的类型:
- 科研push型:老师催的紧,学生进步快,容易出成果,但学生可能兼顾不到其他方面。这种老师往往是比较年轻的,需要更多论文去申各种“帽子”
- 科研佛系型:给你任务了,做不做是你的事
- 项目push型:有的会发多点钱,有的可能还是不发钱……
- 项目佛系型:甲方催老师,老师才来催你
- 奇怪类型:手里的学生没几个正常毕业,学生普遍反映压力大,在组会上哭……
吾之蜜糖,汝之砒霜。想好自己以后想从事什么工作,找个和自己契合的导师,如果你想读博就跟科研push型;想考公或干别的需要时间的活,应该找放养的老师。
还要看老师的性格和你契合不,有些老师说话急,这是他的性格,如果你不是这种性格,就容易误会老师是不是在骂你。
计算机学院可以分为4个系,粗略的概况:
- 智能计算系统系,1系是硬件类:好好看数电模电
- 计算机科学与软件系,2系是分布式数据库(李战怀、刘文洁老师)、数据挖掘(尚学群老师团队):好好看数据库
- 计算机信息工程系,3系的话自然语言处理(NLP)、语音相关、复杂软件:数学是一定要看的,基础知识不能忘,专业课知识也需要看,还需要自己学习图像处理和信号处理这些机器学习方面的知识。
- 网络信息安全与电子商务系,4系是网络与安全,看这名字你计网和密码学就得好好看了
老师是X系不代表他一定搞XXX,还得具体人具体分析。
有些老师做医疗图像,也有老师做金融大数据,这些上面划分都无法涵盖
软件学院没有分系,需要具体了解老师的研究方向和性格。
因此研究生三年过的幸福不,取决于你的导师,取决于你现在有没有选好。一定要找到他的学生问问,最好问研二的。
联系导师的几个时机:
- 考前暑假
- 初试考完这两天
- 初试出分当天(推荐)
- 复试前
注意事项:
- 计算机学生一定要提前联系导师,软件推荐但不强制
- 不要群发邮件,隔一周没回可考虑下一个,也可以不放弃,打电话给他(舍友老师没看到邮件,后来是他打电话给老师争取到名额)
- 邮件内容、简历格式参考网上就好,邮件简历可适当吹牛
- 热门的老师可能收到邮件后会有电话面试
- 不要扎堆报老师,有时是2系火爆,有时是3系火爆
- 有时牛导可能找不够人,大家都不敢报,也有运气成分
- 老师风格也会换,他怎么对你的学长,未必就这样对你,随缘吧
学长/姐说老师有“资源”怎么理解?不管哪里,人情、朋友总是加分项,有些老师企业认识不少人,能拿到数据,能推荐你实习;有些老师认识竞赛评委、期刊评委,终究是好事。
- 收集老师的研究方向,待补充
机试相关
结合我数据结构的笔记,自己改成能跑的代码,ide用codeblocks(codeblocks-13.12mingw-setup-TDM-GCC-481.exe链接),跨考同学去看C语言中文网、黑马程序员C++的视频
- 待补充
- 整理机试文件放上来
面试准备~
声明:这并不是什么泄题,是根据我的理解和网上公开信息,站在老师立场,可能会提问的内容。
总体思路:追求广而不是深,面试时间有限,每个老师擅长方向不一样,面试准备时要把本科专业课统统复习一遍。
书本推荐
- 高频
- 数据结构:书本可以用天勤,初试没看的串,要看一下。机试和面试复习思路不一样,机试你就刷题。面试侧重算法思想、概念,也可能让你看一段代码讲讲作用、给函数填关键句完成要求。
- 组原:我当初看的是天勤,或者你可以看黄皮封面、唐朔飞老师的《计算机组成原理》
- OS:我当初看的是天勤,或者可以看白色封面、西电出版社的《计算机操作系统(第四版)》
- 网络:我当初看的是王道,翻一下我的初试网络笔记。初试考网络的同学少了背诵大头
- 数据库:没找到特别好的书,本科用的是红色封面、萨师煊老师的《数据库系统概论》,这书偏向数学、理论。2系同学看看怎么处理并发,多版本并发控制等等
- 张海藩老师的《软件工程导论(第5版)》
- 中频
- 机器学习
- 线性代数、概率论
- 数字电路
- 低频
- 离散数学
- 编译原理
下面各科笔记基本从书中摘出,如果你没学过某一科,先去翻一遍书,不然看不懂
数据结构
- 代补充
计算机组成原理
组原笔记主要根据天勤组成原理写的
推荐阅读:【硬件科普】带你认识CPU这个系列视频
计算机系统概述
图片出自天勤组成原理
层次结构
计算机硬件主要由存储器、运算器、控制器、输入设备和输出设备组成。
运算器+控制器=CPU
图片出自天勤组成原理
计算机的编程语言也可以分为三大类:机器语言、汇编语言和高级语言。
- 机器语言用二进制代码“0”或“1”描述不同的指令,编程人员需要记忆每一条指令的二进制编码。机器语言的优点是计算机可以直接识别和执行。
- 汇编语言实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。汇编语言的程序必须经过一个称为汇编程序的系统软件的翻译,将其转换为计算机的机器语言后,才能在计算机的硬件系统上执行。
- 高级语言(如C++、Java等)需要经过编译程序编译成汇编语言程序,然后经过汇编操作得到机器语言程序,或者直接由高级语言程序翻译成机器语言程序。高级语言的优点是方便编程人员写出解决问题的处理方案和解题过程。
性能指标
CPI, MIPS和FLOPS (三者为衡量运算速度的指标)
CPI (Clock Cycle Per Instruction):执行一条指令所需要的时钟周期数。
MIPS (Million Instructions Per Second):每秒可执行百万条指令数
FLOPS (Floating-point Operations Per Second):每秒执行的浮点运算次数。
MFLOPS (Million Floating-point Operations Per Second):每秒百万次浮点运算,与MIPS 类似。
GFLOPS (Giga Floating-point Operations Per Second):每秒十亿次浮点运算。
补充: IPC (Instructions Per Clock Cycle): CPU的每一个时钟周期内所执行的指令数。
数据的表示和运算
数制和编码
真值和机器数
- 日常生活中我们经常看到+5,—8,—0.1,+3.6等这些带有“+”或者“—”符号的数,称为真值。那么如果要用计算机处理这些数,计算机不认识“+”或者“—”符号怎么办?
- 一想到具有两种状态的事物,都应该联想到二进制的0和1,恰好“+”“一”是两种状态,于是就可以使用二进制的0和1来表示。那就再做一个规定:0表示正号,1表示负号。
- 这样就可以将一个真值完全数字化了,而被数字化的数就称为机器数(机器数分为原码、补码、反码和移码)。
存储器的层次结构
图片出自天勤组成原理
存储器的分类
只读存储器ROM与随机存取存储器RAM一起构成了主存。
主存储器分类
- 随机存取存储器(Random Access Memory,RAM)。
在随机存取存储器中存取信息,存取时间和存储位置没有关系。优点是读写方便,使用灵活,缺点是断电信息丢失。分为静态RAM(SRAM)和动态RAM(DRAM),静态 RAM 常用作高速缓冲存储器,动态RAM常用作主存。
- 只读存储器(Read—Only Memory,ROM)
顾名思义,只读存储器的内容只能随机读出而不能写入,并且其内容断电之后仍可保留,所以一般把一些固定的、不变的程序存放在这里。
只读存储器主要包括掩膜型只读存储器(MROM)、可编程只读存储器(PROM)、可擦除可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和快擦除读写存储器(Flash Memory)。
图片出自天勤组成原理
存储器的层次化结构
存储系统的层次结构主要体现在缓存—主存和主存—辅存这两个存储层次上
图片出自天勤组成原理
注意: Cache—主存—辅存各层次中的内容都可以在下一层次中找到,即Cache的内容可以在主存和辅存中找到;主存的内容可以在辅存中找到。 缓存—主存层次主要解决CPU和主存速度不匹配的问题。主存和缓存之间的数据交换是由硬件自动完成的,对程序员是透明的。 主存—辅存层次主要解决存储系统的容量问题。主存和辅存之间的数据交换是由硬件和操作系统共同完成的。
DRAM存储器
DRAM通常有3种刷新方式:集中刷新、分散刷新和异步刷新。
- 集中刷新。把刷新操作集中到一段时间内集中进行(集中“歼灭”)。
- 分散刷新。将刷新操作分散进行,周期性地进行(分散“歼灭”)。
- 异步刷新。是一个折中方案,既不会像集中刷新那么大费周章,产生集中的固定时间,也不会像分散刷新那么频繁地刷新,而是有计划地刷新,时间分配十分合理。
注意:由于在储体是矩阵形式,因此每次刷新都是对行进行刷新。
缩短“死时间”的方式有多种,如在CPU指令译码阶段进行刷新。
局部性原理:通过大量典型程序的分析,发现CPU从主存取指令或取数据,在一定时间内,只是对主存局部地址区域的访问(如循环程序、一些常数)。于是人们就想到一个办法,将CPU近期需要的程序提前存放到Cache中。这样CPU只需访问 Cache 就可以得到所需要的数据了。一般Cache采用高速的SRAM制作(主存一般使用DRAM),其价格比主存高,容量远比主存小。
补充知识点:局部性原理一般有两种,即时间局部性原理和空间局部性原理。
1)时间局部性原理。如果某个数据或指令被使用,那么不久将可能再被使用。
2)空间局部性原理。如果某个数据或指令被使用,那么附近数据也可能被使用。
高速缓存存储器 Cache
Cache和主存之间的地址映射方式有三种:直接映射、全相联映射、组相联映射(限于篇幅,自己翻书好好看看这里)
Cache中的替换算法:
Cache的工作原理要求它尽量保存最新数据。当一个新的主存块需要复制到Cache,而允许存放此块的行位置都已占满时,就要产生替换。
替换问题与Cache的组织密切相关:
- 当Cache使用直接映射时,因为直接映射方式一个主存块只能放在一个特定的位置,所以只要把此特定位置上的主存块换出Cache即可。
- 对于全相联和组相联Cache来说,因为一个主存块可以映射到多个Cache块,所以就要通过规定的替换方式从Cache中替换出一块。
- 至于如何选取就涉及替换策略,又称为替换算法。
理想的替换算法应该是把未来很少用到的或者很久才用到的数据块替换出来,但实际上很难做到。常用的替换算法有先进先出算法、近期最少使用算法和随机法。
先进先出算法:略
近期最少使用(LRU)算法:
LRU 算法比较好地利用访存局部性原理替换出近期用得最少的字块。它需要随时记录Cache 中各字块的使用情况,以便确定哪个字块是近期最少使用的字块。
LRU算法实际是一种推测方法,比较复杂,一般采用简化的方法,只记录每个块最近一次使用的时间。LRU算法的平均命中率比FIFO算法高。
随机法:
随机法是随机地确定被替换的块,比较简单,可采用一个随机数产生器产生一个随机被替换的块,但它也没有用到访存的局部性原理,故不能提高Cache的命中率。
Cache的写操作策略?
- 写回法
当CPU写Cache命中时,只修改Cache的内容,而不立即写入主存,只有当此行被换出时才写回主存,这种方式可以减少访问主存的次数。问题来了,那当换出此块的时候怎么能知道此块被修改过?
实现这种方式时对Cache的每行都必须设置一个修改位(或者称为“脏位”),当某行被换出时,根据此行的修改位是0还是1,来决定将该行内容写回主存还是简单丢弃。
注意:上面考虑的是Cache命中时,那不命中呢?如果CPU要对Cache中某块的某字进行修改,此时恰好此字不在Cache中,就需要从主存中找出包含此字的数据块。CPU不会在主存中直接修改,而是找到之后直接复制到Cache中进行修改,等从Cache中换出此块时,再复制到主存。
- 全写法
当写Cache命中时, Cache与主存同时发生写修改,因而较好地保持了Cache与主存内容的一致性。很明显,此时Cache不需要每行都设置修改位。当写Cache未命中时,直接在主存中修改(和写回法不同),至于在主存中修改后需不需要复制到Cache中,这个视情况而定,可以复制也可以不复制。
- 写一次法
写一次法是基于写回法并结合全写法的写策略的一种形式。写命中与写未命中的处理方法与写回法基本相同,仅仅是第一次写命中时要同时写入主存。
一些常识,翻书看一下:硬盘磁道、柱面、硬盘阵列
指令系统
图片出自天勤组成原理
一条指令首先应该告诉机器,用户要干什么?例如,加/减/乘/除或其他操作(由操作码实现)。确定操作后就要知道对谁进行操作(由地址码实现)。因此,一条指令应该由操作码和地址码两部分组成。
注意:冯诺依曼主机里是不刻意区分数据和指令的,怎么处理寄存器里的数据,取决于CPU在什么阶段,译码阶段就当成指令来处理。
指令的寻址方式
数据寻址和指令寻址
指令寻址方式和数据寻址方式有什么不同?
答:程序被启动时,程序所包含的指令和数据都被装入到内存中。在程序指令过程中,需要取指令和操作数,确定指令存放位置的过程称为指令寻址方式,确定操作数存放位置的过程称为数据寻址方式。指令寻址和数据寻址的复杂度是不一样的。
-
指令寻址:找到下一条将要执行指令的地址,指令从内存被取到指令寄存器IR中
- 顺序寻址:顺序执行,指令计数器(PC)+1得到地址
- 跳转寻址:跳转执行,根据转移指令的内容计算得到新地址
-
数据寻址:找到当前正在执行指令的数据地址,详细9种自己翻书
-
立即寻址
-
直接寻址
-
隐含寻址
-
间接寻址
-
寄存器寻址
-
寄存器间接寻址
-
偏移寻址
-
基址寻址:有效地址需要通过某个基础地址来形成,操作数的有效地址EA=指令字中的形式地址A+基址寄存器中的内容(BR) A是用户指定,基址寄存器中的内容由OS确定,不可改变。 扩大操作数的寻址范围、解决多道程序问题
-
变址寻址:有效地址EA=指令字中的形式地址A+变址寄存器IX的内容(IX) A不可变,变址寄存器IX的内容由用户指定 适合处理数组问题和循环问题
-
相对寻址
-
-
如何确定指令的寻址方式?
思路1:设置专门的寻址方式字段,显式说明
思路2:通过定义操作码时隐含定义寻址方式
CISC和RISC的基本概念
RISC的主要特点总结
1)选取使用频率较高的一些简单指令以及一些很有用但又不复杂的指令,让复杂指令的功能由使用频率高的简单指令的组合来实现。
2)指令长度固定,指令格式种类少,寻址方式种类少。
3)只有取数/存数指令访问存储器,其余指令的操作都在寄存器内完成。
4) CPU中有多个通用寄存器(比CISC的多)。
5)采用流水线技术(注意:RISC一定是采用流水线),大部分指令在一个时钟周期内完成。采用超标量和超流水线技术,可使每条指令的平均执行时间小于一个时钟周期。
6)控制器采用组合逻辑控制,不用微程序控制。
7)采用优化的编译程序。
CISC的主要特点总结
1)指令系统复杂庞大,指令数目一般多达200~300条。
2)指令长度不固定,指令格式种类多,寻址方式种类多。
3)可以访存的指令不受限制(RISC只有取数/存数指令访问存储器)
4)由于80%的程序使用其20%的指令,因此CISC各指令的使用频率差距太大。
5)各种指令执行时间相差很大,大多数指令需多个时钟周期才能完成。
6)控制器大多数采用微程序控制。
7)难以用优化编译生成高效的目标代码程序。
中央处理器
图片出自天勤组成原理
CPU的功能和基本结构
控制器的功能是负责协调并控制计算机各部件执行程序的指令序列,包括取指令、分析指令和执行指令。
寄存器分为运算器中的寄存器、控制器中的寄存器
- 运算器中的寄存器
- 暂存寄存器
- 累加寄存器(ACC) 累加寄存器通常简称为累加器,它是一个通用寄存器。其功能是:当运算器的算术逻辑单元(ALU)执行算术或逻辑运算时,为ALU提供一个工作区。累加寄存器暂时存放ALU运算的结果信息。
- 通用寄存器组 通用寄存器组主要用于存放操作数(包括源操作数、日的操作数及中间结果)和各种地址信息等,常见的通用寄存器有AX、BX、CX、 DX以及堆栈指针SP (指示栈项地址)等。
- 状态条件寄存器(PSW) 状态条件寄存器,也叫程序状态字寄存器,保存由算术指令和逻辑指令运行或测试的结果建立的各种条件码内容, 如运算结果进位标志(C)、运算结果溢出标志(V)、运算结果为零标志(Z),运算结果为负标志(N)等。 除此之外,状态条件寄存器还可以保存中断和系统工作状态等信息,以便使CPU和系统能及时了解机器运行状态和程序运行状态。
- 控制器中的寄存器
- 程序计数器(PC) 为了保证程序能够连续地执行下去, CPU必须采取某些手段来确定下一条指令的地址,而程序计数器正是起到了这种作用,所以通常又将程序计数器称为指令计数器。
- 指令寄存器(IR) 指令寄存器用来保存当前正在执行的指令。
- 存储器数据寄存器(MDR)
- 存储器地址寄存器(MAR)
指令执行过程
完整的指令周期包含:取指周期、间址周期、执行阶段、中断周期
控制器的功能和工作原理
实现控制单元(CU)的方式有两类:组合逻辑控制(硬布线)、微程序控制
- 硬布线:速度快、电路复杂、不灵活
- 微程序:速度较慢、设计简单、指令添加容易(灵活)
指令流水线
指令流水线的思想:当第N—2条指令在执行的时候应该对第N—1条指令进行译码,当第N—1条指令在译码时,可以将第N条指令取出来,这样就缩短了每条指令的平均执行周期。
图片出自天勤组成原理
指令流水线出现的3种冲突:结构冒险、数据冒险、控制冒险(打算搞硬件的好好看流水线这块)
中断系统
- 某一外部设备的数据准备就绪后,它“主动”向CPU发出请求中断的信号,请求CPU暂时中断目前正在执行的程序而进行数据交换。
- 当CPU响应这个中断时,便暂停运行主程序,并自动转移到该设备的中断服务程序。
- 当中断服务程序结束以后,CPU又回到原来的主程序。
- 其实,计算机在运行过程中,除了会遇到I/O中断外,还有许多意外事件发生,如突然断电,机器硬件突然出现故障等。
图片出自天勤组成原理
什么叫“关中断”?关闭中断(“中断屏蔽”触发器置“1”),表示CPU不再受理另外一个设备的中断。
补充知识点:指令中断和操作系统中缺页中断的根本区别是什么? 解析:指令周期被分为取指周期、间址周期、执行周期和中断周期。所以一定是在某条指令执行结束之后,才会去响应中断,中断处理完之后继续执行下一条指令。 而缺页中断是指要访问的页不在主存,需要操作系统将其调入主存后再进行访问。区别出来了,缺页中断执行完后,不是访问下一页,而是继续访问当前页。
中断判优:硬件实现、软件实现
总线
图片出自天勤组成原理
总线概述
常见分类
1)并行、串行传输总线
2)按连接部件不同可以分为片内总线、系统总线、通信总线
- 片内总线:芯片内部的总线
- 系统总线:连接五大部件的信息传输线,可以进一步细分
- 数据总线:双向传输
- 地址总线:单向传输
- 控制总线:半双工,控制各部件在不同时刻、部件的总线控制权
- 通信总线:计算机之间通信,可以分为串行、并行通信
总线的结构
- 单总线结构:IO设备和主存共用一组地址线
- 双总线结构
- 三总线结构:任意时刻总能使用一种总线,主存总线与DMA总线不能同时对主存进行存取
图片出自天勤组成原理
图片出自天勤组成原理
总线仲裁
- 集中仲裁方式(翻书看看这块)
- 链式查询
- 计数器查询
- 独立请求方式
- 分布仲裁方式
总线操作和定时
- 同步定时方式
- 异步定时方式
- 不互锁:主模块的请求信号和从模块的回答信号没有互相的制约关系
- 半互锁:主模块的请求信号和从模块的回答信号有简单的制约关系
- 全互锁:主模块的请求信号和从模块的回答信号有完全的制约关系
图片出自天勤组成原理
输入/输出系统
图片出自天勤组成原理
I/O接口
I/O接口就是I/O端口吗? 解答:不是。I/O接口和I/O端口是两个不同的概念,但相互之间有关联,若干个I/O端口加上相应的控制逻辑电路就组成了I/O接口。
I/O接口是主机和外设之间传送信息的“桥梁”,介于主机和外设之间。主机控制外设的命令信息、传送给外设的数据或从外设取来的数据、外设送给主机的状态信息等都要先存放到I/O接口中。
I/O接口中有一些寄存器,这些寄存器分别用来存放数据信息、控制信息和状态信息,分别称为数据端口、控制端口和状态端口,把I/O接口中的这些寄存器称为I/O端口。
I/O方式
- 查询查询
- 程序中断
- DMA方式
- 通道方式
公共类
有没有打算读博?研究生毕业打算直接就业吗?
从老师角度看,老师A专门搞科研,他想找一个契合的学生,从研究生开始布置的任务基本是阅读论文,开组会报告,你研究生阶段可能出不了太多成果,算是入门,博士阶段才能和导师共同出成果。老师B可能专门搞项目,就想找搞开发的学生。老师C可能是大老师,有很多名额,不亲自带学生,你想读博可能就把你分给A,搞开发就分给B。
对于这个问题,我建议你如实回答,最好在发邮件选导师前就了解清楚导师是什么类型的,和自己契合不。如果你是导师C,往往进去以后还能改,比如发现自己不适合搞科研,想转开发,反之也成立。
回答1:打算读博,之前比较关注xx领域,阅读了1篇xx论文(加分项,也引导后面老师的提问了),谈谈感受
回答2:可能毕业就工作,自己还不知道研究生要做什么,对于这个问题还没想好。
考研导师问读博意愿,读博有必要吗? - 知乎 (zhihu.com)
说句题外话,目前我了解到西工大对于博士毕业的要求不算高,积分制,博士学长说一般博三左右就能达到要求了。听说瓜大博士普遍六七年,甚至更久毕业,这是两方面导致的。一方面老师觉得博士能干,不愿意放人,另一方面应聘老师的门槛越来越高,博士想攒更多论文再毕业。
身边想读博的人基本是想当老师,而无论是应聘老师,或是以后各种”帽子“,都有年龄限制,有这方面意愿的同学要早做准备。
学硕研一能申请直博,专硕研二能申请直博(研一成绩不能太差)
@手抓引力波提到科研四素质:道侣财地
- 道:自己是科研能力强的人、科研方向要对
- 侣:导师、师长、团队、领导的帮助
- 财:家里有财力支持你求学
- 地:合适的环境(设备)
###