影响cpu性能的因素有哪些

影响cpu性能的因素有哪些,第1张

CPU的性能和速度取决于时钟频率(一般以赫兹或千兆赫兹计算,即hz与Ghz)和每周期可处理的指令(IPC),两者合并起来就是每秒可处理的指令(IPS)。

IPS值代表了CPU在几种人工指令序列下“高峰期”的运行率,指示和应用。而现实中CPU组成的混合指令和应用,可能需要比IPS值显示的,用更长的时间来完成。而内存层次结构的性能也大大影响中央处理器的性能。

通常工程师便用各种已标准化的测试去测试CPU的性能,已标准化的测试通常被称为“基准”(Benchmarks)。如SPECint,此软仵试图模拟现实中的环境。测量各常用的应用程序,试图得出现实中CPU的绩效。

提高电脑的处理性能,亦使用多核心处理器。原理基本上是一个集成电路插入两个以上的个别处理器(意义上称为核心)。在理想的情况下,双核心处理器性能将是宏内核处理器的两倍。

然而,在现实中,因不完善的软件算法,多核心处理器性能增益远远低于理论,增益只有50%左右。但增加核心数量的处理器,依然可增加一台计算机可以处理的工作量。

这意味着该处理器可以处理大量的不同步的指令和事件,可分担第一核心不堪重负的工作。有时,第二核心将和相邻核心同时处理相同的任务,以防止崩溃。

扩展资料:

中央处理器 *** 作原理

CPU的主要运作原理,不论其外观,都是执行储存于被称为程序里的一系列指令。在此讨论的是遵循普遍的冯·诺伊曼结构(von Neumann architecture)设计的设备。程序以一系列数字储存在计算机存储器中。差不多所有的冯·诺伊曼CPU的运作原理可分为四个阶段:提取、解码、执行和写回。

第一阶段,提取,从程序内存中检索指令(为数值或一系列数值)。由程序计数器指定程序存储器的位置,程序计数器保存供识别目前程序位置的数值。

换言之,程序计数器记录了CPU在目前程序里的踪迹。提取指令之后,PC根据指令式长度增加存储器单元。指令的提取常常必须从相对较慢的存储器查找,导致CPU等候指令的送入。这个问题主要被论及在现代处理器的缓存和流水线架构(见下)。

CPU根据从存储器提取到的指令来决定其执行行为。在解码阶段,指令被拆解为有意义的片段。根据CPU的指令集架构(ISA)定义将数值解译为指令。

一部分的指令数值为运算码,其指示要进行哪些运算。其它的数值通常供给指令必要的信息,诸如一个加法运算的运算目标。这样的运算目标也许提供一个常数值(即立即值),或是一个空间的寻址值:寄存器或存储器地址,以寻址模式决定。

在旧的设计中,CPU里的指令解码部分是无法改变的硬体设备。不过在众多抽象且复杂的CPU和ISA中,一个微程序时常用来帮助转换指令为各种形态的讯号。这些微程序在已成品的CPU中往往可以重写,方便变更解码指令。

在提取和解码阶段之后,接着进入执行阶段。该阶段中,连接到各种能够进行所需运算的CPU部件。例如,要求一个加法运算,算术逻辑单元将会连接到一组输入和一组输出。输入提供了要相加的数值,而且在输出将含有总和结果。

ALU内含电路系统,以于输出端完成简单的普通运算和逻辑运算(比如加法和位 *** 作)。如果加法运算产生一个对该CPU处理而言过大的结果,在标志寄存器里,溢出标志可能会被设置(参见以下的数值精度探讨)。

最终阶段,写回,以一定格式将执行阶段的结果简单的写回。运算结果经常被写进CPU内部的寄存器,以供随后指令快速访问。在其它案例中,运算结果可能写进速度较慢,如容量较大且较便宜的主存。某些类型的指令会 *** 作程序计数器,而不直接产生结果资料。

这些一般称作“跳转”并在程序中带来循环行为、条件性执行(透过条件跳转)和函数[jumps]。许多指令也会改变标志寄存器的状态比特。这些标志可用来影响程序行为,缘由于它们时常显出各种运算结果。

例如,以一个“比较”指令判断两个值的大小,根据比较结果在标志寄存器上设置一个数值。这个标志可借由随后的跳转指令来决定程序动向。

在执行指令并写回结果资料之后,程序计数器的值会递增,反复整个过程,下一个指令周期正常的提取下一个顺序指令。

如果完成的是跳转指令,程序计数器将会修改成跳转到的指令地址,且程序继续正常执行。许多复杂的CPU可以一次提取多个指令、解码,并且同时执行。这个部分一般涉及“经典RISC流水线”,那些实际上是在众多使用简单CPU的电子设备中快速普及(常称为微控制器)。

在计算机科学中,内联函数(有时称作在线函数或编译时期展开函数)是一种编程语言结构,用来建议编译器对一些特殊函数进行内联扩展(有时称作在线扩展)。

内联扩展是一种特别的用于消除调用函数时所造成的固有的时间消耗方法。一般用于能够快速执行的函数,因为在这种情况下函数调用的时间消耗显得更为突出。这种方法对于很小的函数也有空间上的益处,并且它也使得一些其他的优化成为可能。

没有了内联函式,程式员难以控制哪些函数内联哪些不内联;由编译器自行决定是否内联。加上这种控制维度准许特定于应用的知识,诸如执行函式的频繁程度,被利用于选择哪些函数要内联。

此外,在一些语言中,内联函数与编译模型联系紧密:如在C++中,有必要在每个使用它的模块中定义一个内联函数;与之相对应的,普通函数必须定义在单个模块中。这使得模块编译独立于其他的模块。

扩展资料:

在C++中我们通常定义以下函数来求两个整数的最大值:

代码如下:

int max(int a, int b)

{

return a > b a : b;

}

为这么一个小的 *** 作定义一个函数的好处有:

① 阅读和理解函数 max 的调用,要比读一条等价的条件表达式并解释它的含义要容易得多

② 如果需要做任何修改,修改函数要比找出并修改每一处等价表达式容易得多

③ 使用函数可以确保统一的行为,每个测试都保证以相同的方式实现

④ 函数可以重用,不必为其他应用程序重写代码

虽然有这么多好处,但是写成函数有一个潜在的缺点:调用函数比求解等价表达式要慢得多。在大多数的机器上,调用函数都要做很多工作:调用前要先保存寄存器,并在返回时恢复,复制实参,程序还必须转向一个新位置执行

C++中支持内联函数,其目的是为了提高函数的执行效率,用关键字 inline 放在函数定义(注意是定义而非声明,下文继续讲到)的前面即可将函数指定为内联函数,内联函数通常就是将它在程序中的每个调用点上“内联地”展开。

内联函数应该在头文件中定义,这一点不同于其他函数。编译器在调用点内联展开函数的代码时,必须能够找到 inline 函数的定义才能将调用函数替换为函数代码,而对于在头文件中仅有函数声明是不够的。

当然内联函数定义也可以放在源文件中,但此时只有定义的那个源文件可以用它,而且必须为每个源文件拷贝一份定义(即每个源文件里的定义必须是完全相同的),当然即使是放在头文件中,也是对每个定义做一份拷贝,只不过是编译器替你完成这种拷贝罢了。

但相比于放在源文件中,放在头文件中既能够确保调用函数是定义是相同的,又能够保证在调用点能够找到函数定义从而完成内联(替换)。

参考资料:

百度百科——内联函数

函数的调用就是 跳转到函数体的入口地址。

函数体本身的存储空间是在exe里txt段,然后运行加载的时候映射到地址空间。不过看你的问题,你关注的不是这个的占用。

关于你问的问题, 其实是因为一旦定义了虚函数,在C++类型的头部,就会有一个指针的隐藏变量被定义,从而该类型的每个对象都会有这个变量的大小。 这个只有类型有和没有虚函数的区别,虚函数的个数造成内存增长只是虚表里(每class一个),每个对象里只是存的一个指针,不会有size变化。

对于非虚的函数,编译的时候,直接就是填写的函数体的入口地址; 而虚函数,则是要经过计算,先通过对象头部寸的虚表指针找到虚表,再去找对应的虚表项 ,里面存储的就是需要的函数的入口地址。

建议楼主看看 C++布局方面的书,比如 <Inside C++ Object Model>, 以及平时多用VS *** 练一下调试技巧,然后适当熟悉简单的汇编代码,对融会贯通很有帮助。

2级,希望你能认真看了并采纳,毕竟这问题挺复杂,说起来麻烦。

原文并没有说的完全对,这么做也是没有大错的。

它两次判别P1-1的状态,中间Delay(10),不过是防抖而已,就是说,第一次检测到按键按下,并且过了一段时间发现还是按下状态,那么就认为是按键动作,而不是干扰造成的。

一般来说这个时间是100ms左右到150ms左右,所以要有这么一段时间被delay做不了事情。但是这种干扰不多,所以大部分时间是跳过的。需要按键触发的程序,100ms左右不做事情也不是什么大事。

但真要求严格了,比如说每50ms必须有些事儿要处理,不能有这种干扰,那么就放在中断里,什么中断?原文没讲清楚,应该是时间中断,比如每隔100ms一次。中断里写

if(P1_0 == 0)

{

if(i == 0)

i = 1;

else{ 你的代码}

}

else

{

i = 0;

}

这样就行了。从初始化到判别,到误判清零都有了,i应该是个全局变量,中断可以访问的,或者是个const的也可以

但是这么做也并不很好,所以更高效的是做一个自己的时间系统,即

中断每1ms一次,有个变量做时间,假设叫做MyTimer,那么中断里

MyTimer ++; 就可以

然后你判别的程序就写成,

if(p1_1 == 0)

{

if(pressed == 0)

LastTime = MyTimer;

else

if(MyTimer - LastTimer > 100)

{

your code

}

}

else{

pressed = 0;

}

当然你的代码里要处理状态复位,清零,停止判别P1_1等具体事情,而MyTimer-LastTimer也要处理时间反卷等具体细节了。

你问题里的原文不用看了,有诸多问题。而我写的这个是多年经验总结实践而来。虽然写的简单,原理是相当正确的。你可以参考

时间触发嵌入式系统设计模式 一书,里面针对这种问题讲的非常深入。作者是Pont Michael J

CPU原理 CPU的主要功能是执行存放在主存储器中的程序即机器指令CPU是由控制器和运算器 本章概述 本章重点在于:CPU基本组成与指令流程这涉及到建立整机概念的核心问题:CPU如何执行指令,计算机如何存储信息,如何控制输入/输出 1CPU的的基本组成 2拟定指令流程 1,CPU的的基本组成 在理解CPU的组成时需要抓住以下几点: (1)ALU部件,以及它的输入与输出方式 (2)用于运算的一组寄存器R0-R3或暂存器C,D,Z (3)用于控制的一组寄存器:指令寄存器IR,程序计数器PC,程序状态字寄存器PSW (4)与访存相关的一组寄存器:存储器地址寄存器MAR,存储器数据状态字寄存器MDR,堆栈指针SP (5)内部总路线的连接方式,如何向它发送信息,它又如何输出信息 (6)CPU如何通过系统总路线与主存,I/O设备连接 331节给出的是一种简化的CPU内部组成模型,它是拟定指令流程的基础, 2,拟定指令流程 指令流程体现了计算机工作原理中一个核心内容:CPU怎样执行程序指令 考核方式是给出一条特定的指令,以模型机CPU内部组成为背景,用指令语句描述其读取与执行流程关键是要熟练掌握几种基本寻址方式的实现过程,分清谁是源地址,谁是目的地址, *** 作码是什么 例如:拟出指令MOV -(SP),X(R0)读取与执行流程 学习内容: 31 算术逻辑运算部件ALU 32 运算方法 33 CPU模型的组成及其数据通路 34 时序控制方式 35 指令的执行与组合逻辑控制器 36 微程序控制器 学习目标: 理解全加器的逻辑式和结构,并行加法器及所采用的进位链,多功能算术逻辑运算部件SN74181的功能 掌握初码定点加减运算,移位 *** 作,理解浮点加减运算,十进制加法运算,掌握无符号整数一位乘法并了解其逻辑实现,掌握无符号整数一位除法,了解浮点乘除运算 学习目标: 掌握模型机的基本组成,数据通路及数据传送,掌握微命令的基本形式 理解控制器的功能,掌握指令流程及组合逻辑控制器的工作原理 掌握微型程序控制的概念,了解微指令的编码方式和顺序控制方式,了解微指令的格式 重点难点: 补码定点加减运算,无符号整数一位乘法和除法(难点) 模型机的基本组成,数据通路及数据传送,微命令的基本形式 指令流程及组合逻辑控制器的工作原理(重点) 课时安排: 9课时 媒体使用: 使用多媒体投影,主要采用PowerPoint准备的电子教案 § 31 算术逻辑运算部件ALU ALU是一种功能较强的组合逻辑电路,有时被称为多功能函数发生器 ALU的核心是加法器 ALU主要完成对二进制代码的定点算术运算和逻辑运算 § 311 加法单元 全加器与半加器: An An-1…Ai…A2 A1 A0 Bn Bn-1…Bi …B2 B1 B0 + Cn Cn-1…Ci …C2 C1 C0 全加器为考虑三个输入的加法单元,半加器为考虑两个输入的加法单元 全加和∑i+向高位的进位Ci 低位送进来的进位Ci 输入量 输出量 用半加器构成全加器 (1)半加求和可用异或门实现: 半加和=AiOBi (半加器的逻辑式) 半加器又称为异或门 (2)全加器=两个半加,其逻辑式: ∑i=AiOBiOCi C i+1=AiBi+(AiOBi)Ci 因逻辑门电路均存在延迟时间,全加器电路是一个延迟部件,其特性将影响全加器的速度 + + + + + § 312 并行加法器与进位链结构 并行加法器:是用n位全加器实现两个n位 *** 作数各位同时相加,其中的全加器的位数与 *** 作数的位数相同 并行加法器的最长时间是由进位信号的传递时间决定的,而每位全加器本身的求和延迟是次要的因素所以,加快进位的产生和传递是提高其速度的关键 进位链:并行加器中传递进位信号的逻辑线路,称为~ 1 基本进位公式: C i+1=AiBi+(AiOBi)Ci 2 并行加法器的串行进位: (1)串行进位的并行加法器是将n个全加器串接起来,就可进行两个n 个位数相加 (2)串行进位方式:是指相加的进位逐级形成的,每一级的进位直接依赖于前一级的进位称为~(行波进位) + Gi为进位产生函数 Pi为进位传递函数 (3)串行进位的延迟时间较长 (4)串行进位的逻辑表达式:见教材P61 3 并行进位(先行进位,同时进位) (1)定义:同时形成各级进位信号的方法,称为~ (2)采用并行进位的加法器的运算速度较快,但是以增加硬件逻辑线路为代价的 § 313 ALU举例 1 SN74181外特性 2 SN74181内部结构 3 SN74181功能表 4 用SN74181构成多位的ALU § 32 运算方法 § 321 定点加减运算 1 原码加减运算: 原码的加减法较复杂,很少使用,其原因: (1)原码的加减运算,因计算机的实际 *** 作取决于指令中的 *** 作码和两个 *** 作数的符号; (2)运算结果的符号判断也较复杂 2补码加减运算: (1)补码加法运算: [X]补+[Y]补=[X+Y]补 两个相加的数无论正负,只要是以补码的形式表示的,则可按二进制规则相加 (2)补码的减法运算: [X-Y]补=[X+(-Y)]补=[X]补+[-Y]补 符号位作为数的一部分直接参与运算 为[Y]补的机器负数 由[Y]补求[-Y]补(机器负数)的方法 定点小数: [-Y]补= [Y]补+2-n 例: [Y]补 =001011 [-Y]补=110100+000001=110101 定点整数: [-Y]补= [Y]补+1 例: [Y]补 =1001011 [-Y]补=0110100+1=0110101 (3) 补码的运算规则: 参加运算的 *** 作数和运算结果均用补码表示; 符号位作为数的一部分直接参与运算; 若指令 *** 作码为加,则两个数按二进制规则相加; 若指令 *** 作码为减,则被减数+减数的机器负数 机器负数的求法见上张幻灯片 3 溢出判别 溢出:指计算机的运算结果超出其所能表示的范围,而发生错误 溢出的分类: 正溢出:运算结果为正且大于所能表示的最大正数 负溢出:运算结果为负且大于所能表示的最小正数(绝对值最大的负数) 溢出判断的方法: (1)采用一个符号位判断: 即:当两个同号数相加,若所得结果与两数符号不同,则表示溢出 (2)采用最高有效位的进位判断: 即:两正数相加,最高有效位有进位,符号位无进位,表明运算结果溢出; 两负数相加,最高有效位无进位,符号位有进位,表明运算结果溢出; 以下各判断逻辑式见教材P66-67) (3)采用变形补码 将符号位扩充为两位,称为变形码 采用变形祉码表示的运算结果,可根据两个符号位是否一致来判断是否溢出 双符号位的含义: 00——结果为正,无溢出; 01——结果为正溢出; 10——结果为负溢出; 11——结果为负,无溢出 CPU内设的一个状态寄存器,其中的溢出位V是用来记录溢出是否发生 § 322 移位 移位 *** 作的分类: 按性质分:逻辑~,循环~,算术~ 按被移位数据长度分:字节,半字节,多倍字节 按每次移位的位数分:移1位,移n位(n ≤被移位数据长度) 1 逻辑移位: 定义:将一组无数值意义的二进制代码进行移位 移位规则:左移时低位补0,右补移时高位补0 2循环移位: 定义:在闭合移位环路中,在被子移位数据的最高位与最低位之间有移位通路 移位规则: 循环左移时最高位移到最低位,其余各位依次左移; 循环右移时最低位移到最高位,其余各位依次右移; 3 算术移位: 定义:带符号数的移位,移位后数的符号不变而数值变化 移位规则: (1)原码移位规则 (2)补码右移规则 见教材P68页 (3)补码左移规则 § 323 浮点加减运算 运算规则及硬件实现 (1)对阶 *** 作(重点是对阶的规则P65) (2)实现尾数的加(减)运算 (3)结果规格化和判断溢出 左规 右规 (4)余入 *** 作 § 324 十进制加减运算 1 进制转换 2 直接进行十进制运算: 采用BCD码表示,运算由BCD码运算指令完成 两种方法:见教材P71页 3 BCD码的加法运算 "加六校正" § 325 定点乘除运算 乘除法运算是计算机的基本运算之一因乘除法运算 需要更多的硬件支持,并不是所有的计算机都配置这种硬件,但是所有的计算机都能做乘除法运算 实现乘除法运算大致有三种方案 本节只讨论无符号整数一位乘法和除法 实现乘除法运算大致有三种方案: (1)采用软件实现乘除法运算 即用原有的运算器设备,运用基本运算指令编制实现乘除法运算的子程序这种方法适用于小型机,微型机 (2)在原有运算器基础上增加一些硬件设备来实现乘,除法 *** 作 (3)设置专用的乘除法器使设备处理设备专用化,目的是加快运算速度一般适用于大,中型计算机 1无符号整数一位乘法 1101 被乘数B ×1011 乘数C 1101 1101 0000 + 1101 10001111 乘积 1101 ×1011 00001101 B共4次右移 0001101 B共3次右移 00000 B共2次右移 + 01101 B共1次右移 10001111 乘积 实现无符号整数一位乘法 规则:将n位乘转换为n次"累加与移位",即每一步只求一位乘数所对应的新部分积,并与原部分积作一次累加,然后右移一位 流程图:见教材P73页,图3-8 B—存放被乘数,C—存放乘数, A—初值为0,存放部分积,最后存放乘积高位 用A和C寄存器联合右移以存放逐次增加的部分积,并且使每次 *** 作依据的乘数位始终在C的最低位乘法完成时,A,C存放的是最后乘积,其中C的内容是乘积的低位部分 硬件逻辑原理图:图3-9 例:P73,图3-8(无符号整数一位乘算法流程框图) n位被除数—B n位乘数—C,0—A C0=1 结束 开始 A,C右移一位 A+0—A A+B—A C0=1 N Y N Y 例3-11:1101×1011的运算过程: B 1101 (被乘数) Ca 0 A 0000 C 1011 (乘数) 0 0000 C0=1 +B 1101 1011 0 1101 0 0110 1101 C0=1 +B 1101 1 0011 0 1001 1110 C0=0 +0 0000 0 1001 0 0100 1111 C0=1 +B 1101 1 0001 0 1000 1111 初始状态 第一节拍 第二节拍 第三节拍 第四节拍 乘积 A\B\C三个寄存器 2无符号整数一位除法 由手算法可知:决定商是"1"还是"0",根据部分被除数或余数减去除数是否够减 计算机是实现除法运算,就是要解决如何判断够减与否的问题方法如下: 用逻辑线路进行比较判别 恢复余数法——(改进)不恢复余数法或加减交替法(见教材P75页) 恢复余数法: 将被除数或余数减去除数,若所得余数符号位为0(即正)表明够减,上商1;若余数符号位为1(即负)表明不够减,上商0加上除数(即恢复余数法) 即:先做减法,若余数为正,上商1;若余数为负,上商0,必须恢复原来的余数(加上除数) 不恢复余数法(加减交替法): 此法的特点是在运算过程中如出现不够减,则不必恢复余数,可根据符号,继续向下运算这样运算时步数固定,控制简单 规则: 当余数为正时,商为1,余数左移一位,减除数; 当余数为负时,商为0,余数左移一位,加除数 无符号整数不恢复余数除法流程图: 见教材P75页,图3-11 运算初始时,除数— B,被除数—A和C(其中A—高位,C—低位) 除法完成后商放在C寄存器中,余数放在A寄存器中 A寄存的最高位作为运算中的符号位,用于指示余数的正负 注意:例3-12中第一步 A-B=[A]原-[B]原=[A]初-[B]初= [A]初+[-B]初 B的机器负数:[-B]初=[B]初+1 B求反 作业第10页 001101 + + + + § 326 浮点乘除运算 1 浮点乘法运算 阶码相加并判断溢出 尾数相乘 规格化处理 2 浮点除法运算 预置 尾数调整 求阶差 尾数相除 § 33 CPU模型的组成及其数据通路 CPU的组成: 控制器:完成取指令,分析指令,执行指令的 *** 作 运算部件:实现指令所指定的各种算术逻辑运算 *** 作 各种寄存器:用于存放指令,指令地址, *** 作数及运算结果 CPU内部数据通路:用以连接CPU内部各部件,为信息提供通路 § 331 基本组成 1 寄存器: 存放控制信息的寄存器,如指令寄存器,程序计数器和程序状态字寄存器 存放所处理的数据的寄存器,如通用寄存器和暂存器 寄存器的种类: (1)通用寄存器: 4个:R0,R1,R2,R3 一组可编程访问,具有多种功能的寄存器 指令系统为其分配编号,即寄存器地址 其本身在逻辑上只有接收信息,存储信息和发送信息的功能,但通过编程与运算部件的配合可实现多种功能 (2)暂存器: 3个:C,D,Z C用来暂存从主存储器读出的数据 D设置在ALU的输入端,用来存放一个 *** 作数,还可暂存从主存储器读出的数据,并设有左移和右移的功能 Z设置在ALU的输出端,用来存放运算结果 指令系统中没有为其分配编号,故不能编址访问 (3)指令寄存器IR: 指令寄存器IR——用来存放当前正在执行的一条指令IR的输出是控制器产生控制信号的主要逻辑依据 (4)程序计数器PC: 程序计数器又称为指令计数器或指令指针IP 作用是提供指令的地址 具有加1计数功能,并可编程访问 (5)程序状态字寄存器PS: 程序状态字寄存器又称为标志寄存器 作用:用来存放现行程序的运行状态和工作方式,其内容称为程序状态字PSW PSW是参与控制程序执行的重要依据 (6)堆栈指针SP: SP用来指示堆栈栈顶的位置,其内容是栈顶单元的地址 SP也是可编程访问的寄存 (7)与主存接口的寄存器MAR,MDR: 地址寄存器MAR用来存放CPU访问主存或I/O接口的地址MAR连接地址总线的输出门是三态门 数据寄存MDR用来存放CPU与主存或I/O接口之间传送的数据 CPU对主存的控制信号有两个: 读信号RD—控制对主存的读 *** 作 写信号WR—控制对主存的写 *** 作 2 运算部件: 控制ALU运算的控制信号有: B加(减)1 A减1 A加1 求反 求负 B±1 A--1 A+1 NEG COM 异 或 与 减-- 加+ XOR OR AND SUB ADD 3 总线与数据通路结构: (1)ALU总线 CPU内部采用单总线结构,即设置一组由16根双向数据传送组成的ALU总线(CPU内总线),ALU和所有的寄存器通过这组公共总线连接起来 在单总线结构中,CPU的任何两个部件间的数据传送都必须通过这组总线,控制较简单,但传送速度受到限制 (2)系统总线:16根地址总线,16根数据总线,以及控制总线 CPU 主存 接口 接口 I/O设备 I/O设备 常见计算机硬件系统结构 总线 地址总线 数据总线 控制总线 CPU通过MAR向地址总线提供访问主存单元或I/O接口的地址 CPU通过MDR向数据总线发送或接收数据,以完成与主存单元或I/O接口之间的数据传送 CPU通过控制总线向主存或I/O设备发出(或接收)有关控制信号 4 控制器及微命令的基本形式: (1)微命令的基本形式 微 *** 作命令:是最基本的控制信号,是指直接作用于部件或控制门电路的控制信号,简称微命令 微命令的两种形式: ①电位型微命令:见教材P81页 ②脉冲型微命令:各寄存器均采用同步打入脉冲将ALU总线上的数据打入其中 其种类有:CPR0, CPR1, CPPC, CPIR, CPSP, CPMAR, CPMDR等……………… (2)控制器 控制器:基本功能就是执行指令,即根据指令产生控制信号序列以命令相应部件分步完成指定的 *** 作 传统控制器的主要部件包括:指令寄存器IR,指令译码器,程序计数器PC,状态字寄存器PSW,时序系统和微 *** 作信号发生器 计算机的组成框图: 输入设备 运算器 输出设备 控制器 存贮器 控制信号 数据信号 数据 程序 结果 输入命令 *** 作命令 存取数据 输出命令 存取命令 指令 CPU 计算机的基本工作原理——冯诺依曼原理 § 332 数据传送 1寄存器之间的数据传送:直接通过ALU总线传送数据,具体传送由输出门和打入脉冲控制 2 主存数据传送到CPU:通过系统总线传送数据 3 CPU数据传送到主存 4 执行算术或逻辑 *** 作 见教材P82页 § 34 时序控制方式 计算机中的一条指令的执行过程需要分成读取指令,读取 *** 作数,运算,存放结果等步骤每一步 *** 作则是由控制器产生相应的一些控制信号实现的,每条指令都可分解为一个控制信号序列 指令的执行过程就是依次执行一个确定的控制信号序列的过程 时序控制方式就是指微 *** 作与时序信号之间采取保种关系,它不仅直接决定时序信号的产生,也影响到控制器及其它部件的组成,以及指令的执行速度 § 341 指令执行过程 1 指令的分段执行过程 (1)取指令 (2)分析指令 (3)执行指令 取 *** 作数 执行 *** 作 形成下条指令地址 2 指令之间的衔接方式: 能有效提高设备利用率和运算速度,但若程序需要转移,预取下条指令失败 是在对现行指令系统运算 *** 作时提前从主存取出下条指令,而不必等当前指令全部执行完 并行的重叠处理方式 这种方式控制简单,但在时间上不能充分利用部件 是指在一条指令执行完毕后才开始取下条指令 串行的顺序安排方式 特点 定义 名称 § 342 时序控制方式 时序控制方式就是指微 *** 作与时序信号之间采取保种关系,它不仅直接决定时序信号的产生,也影响到控制器及其它部件的组成,以及指令的执行速度 本节介绍: 同步控制方式 同步控制方式的多级时序系统 1 同步控制方式: 定义:指各项 *** 作由统一的时序信号进行同步控制,这就意味着各个微 *** 作必须在规定时间内完成,到达规定时间就自动执行后继的微 *** 作 基本特征:是将 *** 作时间分为若干长度相同的时钟周期(也称节拍),要求在一个或几个时钟周期内完成各个微 *** 作 采用范围:CPU内部,CPU,主存,各I/O接口之间 优点:时序关系简单,结构上易于集中,相 应的设计和实现较方便 缺点:对时间少的微 *** 作,存在时间上的浪费 2 同步控制方式的多级时序系统: 在CPU中为实现同步控制,必须设置一时序系统,以产生统一的时序信号对各种 *** 作进行定时控制 (1)多时序概念:指在同步控制方式中,通常将时序信号划分几级(其中包括指令周期),称为多级时序 在组合逻辑控制器中,是依靠不同的时间标志使CPU分步执行指令,其时序信号常划分为3级:机器周期,节拍,时钟脉冲 在微程序控制器中,一条指令对应一段微程序(微指令序列),其时序信号划分为2级:节拍,时钟脉冲 CPU每出并执行一条指令,都要完成一系列的 *** 作,这一系列 *** 作所需要的时间通常叫做一个指令周期简单地说,指令周期是取出并执行一条指令的时间 开始 取指令 分析指令 执行指令 取指令——执行指令序列 时序信号划分为3级: 机器周期: 在组合逻辑控制器中,通常将指令周期划分为几个不同的阶段,每个阶段所需的时间,称为机器周期,又称为CPU工作周期或基本周期 节拍(时钟周期): 将一个机器周期划分若干相等的时间段,其间仅完成一步基本 *** 作,这个时间段用一个电平信号宽度对应,称为~ 节拍长度由CPU内部的 *** 作的需要 在时序系统中设置节拍发生器,用以产生节拍信号 时钟脉冲:时序系统的基本定时信号 (2)多级时序信号之间的关系: 见教材P86页,图3-14三级时序信号之间的关系 (3)时序系统的组成: 见教材P87页,图3-15时序系统框图 § 35 指令的执行与组合逻辑控制器 按产生控制信号的方式不同控制器可分:组合逻辑控制器和微程序控制器 组合逻辑控制器:是指产生控制信号即微命令的部件,是用组合逻辑线路来实现 微程序控制器:即将机器指令的 *** 作(从取指令到执行)分解为若干个更基本的微 *** 作序列,并将有关的控制信息(微命令)以微码形式编成微指令,输入控制存储器中 它是早期设计计算机的一种方法,这种方法 是把控制部件看作为产生专门固定时序控制信号的逻辑电路,而逻辑电路以使用最少元件和取得最高 *** 作速度为设计目标一旦控制部件构后,除非重新设计和物理上对它重新接线,否则要想增加新的控制功能是不可能的

这是你安装的软件之间存在冲突。你可以回想一下,是在安装了什么软件之后出现的这种情况,如果知道,就把它卸载。推荐你一篇文章:

小议“非法 *** 作”

在兼容机的 *** 作过程中“非法 *** 作”是很常见的故障现象。经过长时间的摸索和资料的搜集、整理,明白了它的成因及找到了不少对该故障的解决方法。不敢独享,特奉献给广大读者,让大家摆脱“非法 *** 作”的困扰。

在Windows 9x系列中,是用保护模式来管理内存的。所谓保护模式,就是由Windows 9x给每个程序分配系统资源和访问权限。这样一来,将会减少一些不必要的内存占用。但是,当某个应用程序试图侵占其他应用程序的系统资源,或是越权使用的时候,就会出现“非法 *** 作”。“非法 *** 作”造成的原因很复杂,不仅可以由软件问题引起,也可由硬件引起,还有病毒也来作怪。下面,我将分软件及硬件两方面的原因给予介绍。为了使本文具有实用性及可 *** 作性,每个原因都给出了典型例子和它的解决办法。

软件方面

1由软件自身的不完善(BUG)引起

典型例子:Photoshop图形软件在运行时产生的“非法 *** 作”。

解决:将软件升级为高版本或升级补丁程序。如安装Windows 98的sp1就非常必要了。运行期间,应减少其他程序对内存的占用,可关闭病毒防火墙、减少剪贴板中的不必要内容。也可根据自己的情况,升级一下显卡、声卡、或是显示器的驱动程序或将它们更换成新件。

2由病毒感染、病毒的残留“僵尸”、冰河木马引起

典型例子:DLL文件失效。

解决:(1)在有些病毒的发作过程中,往往会伴随着一些文件的改动。一旦某些重要文件(如sys dll vdx)被改动过以后,机器会很难正常工作。方法如下:先用干净的引导盘启动微机,后用最新的杀毒软件清除病毒,再用“系统文件检查器”或者“Extexe”进行文件的恢复。

(2)终止内存中正在运行的冰河木马,然后进入注册表,删除“KEY_LOCAL_MACHINE\Software\Microsoft\Windows\Current-Version\Run”和“RunServices”的键值;将“HKEY_CLASSES_ROOT\xtfileshellopenco-mmand”的键值改成“C:\Windwos\NOTE-PADEXE %1”;重启到DOS,再到硬盘C:\Windows\System中,将Kernel32exe和Sysexplrexe删除。

3由系统文件的损坏或丢失引起

典型例子:Rundll32程序执行无效,即将关闭。

解决:方法一:当按下“详细资料”按钮时,若显示:“Rundll32 caused a general protection fault in module Mmsystemdll”信息,原因很可能就是你的 Systemini 文件里,在[boot]这个区段中,少了:drivers =mmsystemdll 这一行造成的。你自己补上去就可以解决了。为什么会有这个错误的发生呢?大部分都是由于在使用控制面板“添加新硬件”时,使用不正确而造成的。例如,需要你提供驱动程序而你又不能提供正确的驱动程序造成的。使用记事本,打开位于 C:\Windows 下的Systemini 文件。找到“[boot]”这个区段。补上一行“drivers=mmsystemdll”。补上后,保存,然后重新开机。

如果你不能确定该故障是由什么原因造成的,可以用“系统文件检查器”,在设置之中,选择“检查删除的文件” 、“检查修改过的文件”,还可以添加新的文件类型来进行检查、恢复。

4由软件之间的不兼容引起

典型例子:Windows 98下的KVW3000所引起的“非法 *** 作”。

解决:在前面,我曾讲过Windows 9x“内存管理”的概念,病毒软件运行过程中将不遵循这种方式,最终造成“非法 *** 作”的出现。具体方法:对扫毒软件的升级,或者不用病毒防护。还可以不加载 Windows 9x的内存管理程序Emm386exe。

5由缓存设置不合理引起

典型例子:极少出现的,没有规律可循。

解决:遵循缓存的设置规则:

�(1)Win386swp是Windows的“虚拟内存交换文件”,简单地说,就是拿一部分硬盘空间当作内存使用,先把一些内存中闲置太久的程序,放到硬盘上,等CPU要用的时候,再从硬盘的win386swp里读出来。它的大小按物理内存的2倍来设置。(2)在Windows 98下,使用虚拟设备磁盘缓存Vcache。在“系统配置实用程序”中,找到sysytemini,再找到“[vcache]”小节,添入: MinFileCache=16384 MaxFileCache=16384 ChunkSize=512。上面的数值是以64MB为例采取的,一般原则是:物理内存×25%×512=VCache。(3)CD-ROMCache优化,注册表中“HKEY_LOCAL_MACHINE\Systm\CurrentControlSet\control\FileSystem\CDFS”,右边能看到“CacheSize”和“Prefetch”。如果你现在是使用Windows 98推荐的4倍速设置的话,它们的值应该是“0000026b”和“000000e4”,我们需要分开来修改这两个数值,我这里省略了计算方法,大家可以参考以下数据值,并根据自己的需要来修改吧,修改完后需要重新启动。

6由系统资源匮乏引起

典型例子:打印或保存时引起的“非法 *** 作”。

解决:升级内存,加大缓存。移除一些不必要的软件,如:桌面主题、屏幕保护、计划任务、声音和输入法指示器、声卡的DOS驱动程序、防火墙、查毒软件、背景、Office 2000的竖式工具栏等等。最好是在启动微机后,先运行比较大的软件。还应加上一个良好的内存管理专家软件。

硬件方面

1由系统及其系统部件过热引起

典型例子:SDRAM的过热故障。

解决:选择好一点的散热片和散热风扇,风扇转速要高,散热片的散热面积要大,散热片材质要利于散热,与被散热部件的接触面积要大。内存的散热:现在市场上已经出现了内存的散热片,是一种长方形带圆孔的东西,但是散热体的体积过大,会影响到第二条SDRAM的插位,再就是应当注意机箱通风和不要超频。

2由硬件质量不好引起

典型例子:SDRAM的质量不稳定产生的“非法 *** 作”。

解决:首先将BIOS中的内存参数设置得保守一些,如:SDRAM CAS LATENCY的值,设为CL=3。再就是不要超频,实在不行,只有更换内存了。

3由硬件I/O冲突�兼容性差引起

典型例子:网卡的冲突。

解决:从设备管理中,删除带“”或带“!”的设备,让系统重新识别一下硬件后,再安装驱动程序。I/O冲突的解决:查看“设备管理器/属性”中的“ 中断请求”,若有冲突,将它进行调整即可。再就是升级一下BIOS程序,也可以解决一些问题。

4由硬件超频引起的“非法 *** 作”

典型例子:CPU和SDRAM超频故障。

解决:首先要保证自己的硬件有良好的可超性能,再就是要将散热的危害性降到最小程度,CPU表面温度控制在50℃以内,SDRAM最好在25℃左右。

5由硬件损坏引起

典型例子:包括一些接口的损坏,或者是小的电子元件被击穿。

解决:要有专门的仪器和方法来测试,一般很少出现。这里就不多讲了。

结论:上面讲到的,只不过是产生非法 *** 作及解决的一些知识,它只是许多微机故障中的一个方面。下面,谈一谈为减少非法 *** 作所应当知道的一些维护知识:

�(1)对机房环境的维护:防尘避免高温、高湿度。

�(2)看清故障,不要盲目处理,避免引发其他故障。

�(3)做好接地,避免静电的危害。

�(4)积极地吸取别人的好的建议,以增加对微机的掌握程度。

�(5)定期地进行除尘、除湿的维护。

�(6)注意软件版本的不断升级,以减少BUG的危害,增强功能。

�(7)意木马冰河的防范、杀毒软件的更新。

�(8)保持机箱的稳定性、避免不必要的振动、硬物的冲击。

�(9)保持硬盘的数据整洁,定期运行管理软件,如:磁盘扫描、系统文件检查器、磁盘碎片整理、备份程序……

以上就是关于影响cpu性能的因素有哪些全部的内容,包括:影响cpu性能的因素有哪些、什么是内联函数、一直有个疑惑,C/C++编译器是如何调用函数的等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/9308300.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存