鱼C论坛

 找回密码
 立即注册
查看: 2839|回复: 3

[学习笔记] 和CPU说话04

[复制链接]
发表于 2017-7-5 11:26:36 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
2017.7.5
问一下自己一个问题:我学模拟电路可以做什么?
下边是一些前辈的话:
http://www.dzsc.com/data/2016-4-22/109589.html
反复看了几遍,觉得这东西是很厉害,可是目前来看,和我想要的答案好像没有太大直接关系。
真的是很纠结,学这个恐怕要花很多很多时间,现在第一步,是弄清模拟电路的学习方法、步骤。
暂略,晚点补充。

想要以现在的水平自己弄操作系统,实在是有些痴心妄想,即使依葫芦画瓢,都很可能画不出来。
画出来了,也不是自己想要的东西。

所以重新学习大量的基础知识还是很有必要的。
因此,暂时先再看看win32汇编吧。
1 什么叫一级缓存,有什么用?
一级缓存简介:
CPU缓存(Cache Memory)是位于CPU与内存之间的临时存储器,它的容量比内存小得多但是交换速度却比内存要快得多。缓存的出现主要是为了解决CPU运算速度与内存读写速度不匹配的矛盾,因为CPU运算速度要比内存读写速度快很多,这样会使CPU花费很长时间等待数据到来或把数据写入内存。在缓存中的数据是内存中的一小部分,但这一小部分是短时间内CPU即将访问的,当CPU调用大量数据时,就可避开程序直接从内存中调用,从而加快读取速度。由此可见,在CPU中加入缓存是一种高效的解决方案,这样整个内存储器(缓存+内存)就变成了既有缓存的高速度,又有内存的大容量的存储系统了。缓存对CPU的性能影响很大,主要是因为CPU的数据交换顺序和CPU与缓存间的带宽引起的。
原理:
原理的东西就不太好理解了,这或许就牵涉到模拟电路和数字电路的相关知识。
问题:
我们的汇编代码与这几级缓存有关系吗?
通过代码能影响CPU对这些缓存的使用?

2 倍频技术是什么,有什么用?
        在电子电路中,产生的输出信号频率是输入信号频率的整数倍称为倍频。假设输入信号频率为n,则第一个倍频2n,相应地3n, 4n……等均称为倍频。在电脑CPU中,主频=外频x倍频。
        倍频是使获得频率为原频率整数倍的方法。利用非线性器件从原频率产生多次谐波,通过带通滤波器选出所需倍数的那次谐波。在数字电路中则利用逻辑门来实现倍频。

暂时深入学习这个好像也没啥大用。。。
3 超标量体系结构
超标量体系结构 (superscalar architectures)超标量体系结构描述一种微处理器设计,它能够在一个时钟周期执行多个指令。在超标量体系结构设计中,处理器或指令编译器能够判断指令能独立于其它顺序指令而执行,还是依赖于另一指令,必须跟其按顺序执行。处理器然后使用多个执行单元同时执行两个或更多独立指令。超标量体系结构设计有时称“第二代RISC”。
        这个的简介是复制下来了,可还是不怎么明白:(
       
4 流水线技术
流水线(pipeline)技术是指在程序执行时多条指令重叠进行操作的一种准并行处理实现技术。流水线是Intel首次在486芯片中开始使用的。流水线的工作方式就像工业生产上的装配流水线。在CPU中由5—6个不同功能的电路单元组成一条指令处理流水线,然后将一条X86指令分成5—6步后再由这些电路单元分别执行,这样就能实现在一个CPU时钟周期完成一条指令,因此提高CPU的运算速度。经典奔腾每条整数流水线都分为四级流水,即取指令、译码、执行、写回结果,浮点流水又分为八级流水。
学这些东西,就像在脑子里点亮一个神经元储存他们的名字,却没存入详细内容,更没法与相关的东西联系起来,这样就很难记住。
学习某样东西,应该需要由名称点放射出多条内容连线连接详细内容,然后又设法联系其他名称,最终形成一个全局联系的系统,这样才能真正记住。单独的一个记忆点没联系其他东西的话,很容易就消失了,就像没电了,就什么都没了,形成了系统,只要回忆一个点,就能全系统充电,让其所有记忆点得以存在下去。
学习这些东西,确实需要学习模电数电,这是增加其内容,寻找联系方式的必须途径。
学习历史,就是找到系统的起点,学习其演化过程,就是建立各节点的联系。

5 乱序执行
这好比请A、B、C三个名人为晚会题写横幅“春节联欢晚会”六个大字,每人各写两个字。如果这时在一张大纸上按顺序由A写好"春节"后再交给B写"联欢",然后再由C写"晚会",那么这样在A写的时候,B和C必须等待,而在B写的时候C仍然要等待而A已经没事了。
但如果采用三个人分别用三张纸同时写的做法, 那么B和C都不必须等待就可以同时各写各的了,甚至C和B还可以比A先写好也没关系(就象乱序执行),但当他们都写完后就必须重新在横幅上(自然可以由别人做,就象CPU中乱序执行后的重新排列单元)按"春节联欢晚会"的顺序排好才能挂出去。

6 分支预测
当包含流水线技术的处理器处理分支指令时就会遇到一个问题,根据判定条件的真/假的不同,有可能会产生跳转,而这会打断流水线中指令的处理,因为处理器无法确定该指令的下一条指令,直到分支执行完毕。流水线越长,处理器等待的时间便越长,因为它必须等待分支指令处理完毕,才能确定下一条进入流水线的指令。
分支预测技术便是为解决这一问题而出现的。
分支预测技术包含编译时进行的静态分支预测和硬件在执行时进行的动态分支预测。

7 浮点处理器
连浮点是什么都还不太搞得清楚,更没法得知浮点处理与多媒体的关系了。

8 多媒体处理的57条指令
在最初发明计算机的数十年里,随着计算机功能日趋增大,性能日趋变强,内部元器件也越来越多,指令集日趋复杂,过于冗杂的指令严重的影响了计算机的工作效率。后来经过研究发现,在计算机中,80%程序只用到了20%的指令集,基于这一发现,RISC精简指令集被提了出来,这是计算机系统架构的一次深刻革命。RISC体系结构的基本思路是:抓住CISC指令系统指令种类太多、指令格式不规范、寻址方式太多的缺点,通过减少指令种类、规范指令格式和简化寻址方式,方便处理器内部的并行处理,提高VLSI器件的使用效率,从而大幅度地提高处理器的性能。RISC指令集有许多特征,其中最重要的有:
指令种类少,指令格式规范:
MMX 指令集
MMX(Multi Media eXtension,多媒体扩展指令集)指令集是Intel公司于1996年推出的一项多媒体指令增强技术。MMX指令集中包括有57条多媒体指令,通过这些指令可以一次处理多个数据,在处理结果超过实际处理能力的时候也能进行正常处理,这样在软件的配合下,就可以得到更高的性能。MMX的益处在于,当时存在的操作系统不必为此而做出任何修改便可以轻松地执行MMX程序。但是,问题也比较明显,那就是MMX指令集与x87
浮点运算指令不能够同时执行,必须做密集式的交错切换才可以正常执行,这种情况就势必造成整个系统运行质量的下降。
SSE指令集
SSE(Streaming SIMD Extensions,单指令多数据流扩展)指令集是Intel在Pentium III处理器中率先推出的。其实,早在PIII正式推出之前,Intel公司就曾经通过各种渠道公布过所谓的KNI(Katmai New Instruction)指令集,这个指令集也就是SSE指令集的前身,并一度被很多传媒称之为MMX指令集的下一个版本,即MMX2指令集。究其背景,原来"KNI"指令集是Intel公司最早为其下一代芯片命名的指令集名称,而所谓的"MMX2"则完全是硬件评论家们和媒体凭感觉和印象对"KNI"的 评价,Intel公司从未正式发布过关于MMX2的消息。
而最终推出的SSE指令集也就是所谓胜出的"互联网SSE"指令集。SSE指令集包括了70条指令,其中包含提高3D图形运算效率的50条SIMD(单指令多数据技术)浮点运算指令、12条MMX 整数运算增强指令、8条优化内存中连续数据块传输指令。理论上这些指令对目前流行的图像处理、浮点运算、3D运算、视频处理、音频处理等诸多多媒体应用起到全面强化的作用。SSE指令与3DNow!指令彼此互不兼容,但SSE包含了3DNow!技术的绝大部分功能,只是实现的方法不同。SSE兼容MMX指令,它可以通过SIMD和单时钟周期并行处理多
个浮点数据来有效地提高浮点运算速度。
SSE2指令集
SSE2(Streaming SIMD Extensions 2,Intel官方称为SIMD 流技术扩展 2或数据流单指令多数据扩展指令集2)指令集是Intel公司在SSE指令集的基础上发展起来的。相比于SSE,SSE2使用了144个新增指令,扩展了MMX技术和SSE技术,这些指令提高了广大应用程序的运行性能。随MMX技术引进的SIMD整数指令从64位扩展到了128 位,使SIMD整数类型操作的有效执行率成倍提高。双倍精度浮点SIMD指令允许以 SIMD格式同时执行两个浮点操作,提供双倍精度操作支持有助于加速内容创建、财务、工程和科学应用。除SSE2指令之外,最初的SSE指令也得到增强,通过支持多种数据类型(例如,双字和四字)的算术运算,支持灵活并且动态范围更广的计算功能。SSE2指令可让软件开发员极其灵活的实施算法,并在运行诸如MPEG-2
、MP3、3D图形等之类的软件时增强性能。Intel是从Willamette核心的Pentium 4开始支持SSE2指令集的,而AMD则是从K8架构的SledgeHammer核心的Opteron开始才支持SSE2指令集的。
SSE3指令集
SSE3(Streaming SIMD Extensions 3,Intel官方称为SIMD 流技术扩展 3或数据流单指令多数据扩展指令集 3)指令集是Intel公司在SSE2指令集的基础上发展起来的。相比于SSE2,SSE3在SSE2的基础上又增加了13个额外的SIMD指令。SSE3 中13个新指令的主要目的是改进线程同步和特定应用程序领域,例如媒体和游戏。这些新增指令强化了处理器在浮点转换至整数、复杂算法、视频编码、SIMD浮点寄存器操作以及线程同步等五个方面的表现,最终达到提升多媒体和游戏性能的目的。Intel是从Prescott核心的Pentium 4开始支持SSE3指令集的,而AMD则是从2005年下半年Troy核心的Opteron开始才支持SSE3的。但是需要注意的是,AMD所支持的SSE3与Intel的SSE3并不完全相同,主要是删除了针对Intel超线程技术优化的部分指令。
3D Now!指令集
3DNow!是AMD公司开发的SIMD指令集,可以增强浮点
和多媒体运算的速度,并被AMD广泛应用于其K6-2 、K6-3以及Athlon(K7)处理器上。3DNow!指令集技术其实就是21条机器码的扩展指令集。
与Intel公司的MMX技术侧重于整数运算有所不同,3DNow!指令集主要针对三维建模、坐标变换 和效果渲染等三维应用场合,在软件的配合下,可以大幅度提高3D处理性能。后来在Athlon上开发了Enhanced 3DNow!。这些AMD标准的SIMD指令和Intel的SSE具有相同效能。因为受到Intel在商业上以及Pentium III成功的影响,软件在支持SSE上比起3DNow!更为普遍。Enhanced 3DNow!AMD公司继续增加至52个指令,包含了一些SSE码,因而在针对SSE做最佳化的软件中能获得更好的效能。
SSE4多媒体指令集
Intel公司真正严格意义
上的第五代多媒体指令集-- Streaming SIMD Extension 4(SSE4)被视为是继2001年的SSE2之后最为重要的多媒体指令集改进。除扩展Intel 64位指令外,还新增对于影像编辑、视讯编码、三维渲染以及游戏应用等方面的指令,使得处理器的效能受益性更为广泛。
将分为SSE4.1以及SSE4.2两个版本,其中SSE4.1版本将首度于45纳米Penryn家族处理器中出现,共增加了47条新的指令。全新的SSE4多媒体指令集将增加两组不同的32-bit向量整数乘法运算单元,并引入八位无符号最大值/最小值运算支持,以及16-bit/32-bit有符号和无符号运算支持,从而有效改善编译器执行效率并提升向量整数以及单精度代码的运算能力。与此同时,SSE4多媒体指令集进一步改善插入、提取、寻找、离散、跨步负载以及存储等动作模式,使得向量运算趋于专门化。 第五代SSE4多媒体指令集新增六条浮点点积运算指令,支持单精度、双精度浮点运算以及浮点生成操作,这对于3D游戏以及三维内容生成将产生积极影响。
http://blog.csdn.net/stone_kingnet/article/details/2935485
这个博客或许有帮助。

9 时钟频率
在电子技术中,脉冲信号是一个按一定电压幅度,一定时间间隔连续发出的脉冲信号。脉冲信号之间的时间间隔称为周期;而将在单位时间(如1秒)内所产生的脉冲个数称为频率。频率是描述周期性循环信号(包括脉冲信号)在单位时间内所出现的脉冲数量多少的计量名称;频率的标准计量单位是Hz(赫)。电脑中的系统时钟就是一个典型的频率相当精确和稳定的脉冲信号发生器。
CPU的主频,即CPU内核工作的时钟频率(CPU Clock Speed)。通常所说的某某CPU是多少GHz的,而这个多少GHz就是“CPU的主频”。很多人认为CPU的主频就是其运行速度,其实不然。CPU的主频表示在CPU内数字脉冲信号震荡的速度,与CPU实际的运算能力并没有直接关系。主频和实际的运算速度存在一定的关系,但至今还没有一个确定的公式能够定量两者的数值关系,因为CPU的运算速度还要看CPU的流水线的各方面的性能指标(缓存、指令集、CPU的位数等等)。由于主频并不直接代表运算速度,所以在一定情况下,很可能会出现主频较高的CPU实际运算速度较低的现象。比如AMD公司的AthlonXP系列CPU大多都能以较低的主频,达到英特尔公司的Pentium 4系列CPU较高主频的CPU性能,所以AthlonXP系列CPU才以PR值的方式来命名。因此主频仅是CPU性能表现的一个方面,而不代表CPU的整体性能。CPU的主频不代表CPU的速度,但提高主频对于提高CPU运算速度却是至关重要的。举个例子来说,假设某个CPU在一个时钟周期内执行一条运算指令,那么当CPU运行在100MHz主频时,将比它运行在50MHz主频时速度快一倍。因为100MHz的时钟周期比50MHz的时钟周期占用时间减少了一半,也就是工作在100MHz主频的CPU执行一条运算指令所需时间仅为10ns比工作在50MHz主频时的20ns缩短了一半,自然运算速度也就快了一倍。只不过电脑的整体运行速度不仅取决于CPU运算速度,还与其它各分系统的运行情况有关,只有在提高主频的同时,各分系统运行速度和各分系统之间的数据传输速度都能得到提高后,电脑整体的运行速度才能真正得到提高。

80x86处理器简史学习笔记。
2017.7.5

评分

参与人数 1鱼币 +7 收起 理由
小甲鱼 + 7 热爱鱼C^_^

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2017-7-5 16:33:35 | 显示全部楼层
这学习笔记这么长啊?   你打了多久?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-7-8 15:45:27 | 显示全部楼层
耶稣 发表于 2017-7-5 16:33
这学习笔记这么长啊?   你打了多久?

大部分是查到的东西,复制粘贴而已,弄成笔记也等于是整理一下脑子里的东西,加深印象。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-1-2 11:02:19 | 显示全部楼层
学习很受用
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-20 10:48

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表