关于float在32位和64位的转换?

关于float在32位和64位的转换?,第1张

我看了一下,在vs的两种环境下,这段代码的汇编代码是完全一样的,执行结果也是相同的。

你的结果有所不同,一种可能是使用了不同的指令,这只能自己去弄清楚了。

如图在vs下,做了两个加法后,cvtss2sd指令把标量单精度浮点数转化为标量双精度浮点数,而xmm是sse指令常用的寄存器。

这只是见招拆招,你还需要去看一看cpu的专业文档才会真正明白32位和64位的本质区别,一本讲c语言的基础书籍,怎么可能会说到这方面的知识呢?(692应该是手误吧?)

3DNow!: (3D no waiting)AMD公司开发deSIMD指令集,可以增强浮点和多媒体运算de速度,它de指令数为21条

ALU: (Arithmetic Logic Unit,算术逻辑单元)在处理器之中用于计算de那一部分,与其同级de有数据传输单元和分支单元

BGA:(Ball Grid Array,球状矩阵排列)一种芯片封装形式,例:82443BX

BHT: (branch prediction table,分支预测表)处理器用于决定分支行动方向de数值表

BPU:(Branch Processing Unit,分支处理单元)CPU中用来做分支处理de那一个区域

Brach Pediction: (分支预测)从P5时代开始de一种先进de数据处理方法,由CPU来判断程序分支de进行方向,能够更快运算速度

CMOS: (Complementary metal Oxide Semiconductor,互补金属氧化物半导体)它是一类特殊de芯片,最常见de用途是主板deBIOS(Basic Input/Output System,基本输入/输出系统)

CISC: (Complex Instruction Set Computing,复杂指令集计算机)相对于RISC而言,它de指令位数较长,所以称为复杂指令如:x86指令长度为87位

COB: (Cache on board,板上集成缓存)在处理器卡上集成de缓存,通常指de是二级缓存,例:奔腾II

COD: (Cache on Die,芯片内集成缓存)在处理器芯片内部集成de缓存,通常指de是二级缓存,例:PGA赛扬370

CPGA: (Ceramic Pin Grid Array,陶瓷针型栅格阵列)一种芯片封装形式

CPU: (Center Processing Unit,中央处理器)计算机系统de大脑,用于控制和管理整个机器de运作,并执行计算任务

Data Forwarding: (数据前送)CPU在一个时钟周期内,把一个单元de输出值内容拷贝到另一个单元de输入值中

Decode: (指令解码)由于X86指令de长度不一致,必须用一个单元进行“翻译”,真正de内核按翻译后要求来工作

EC: (Embedded Controller,嵌入式控制器)在一组特定系统中,新增到固定位置,完成一定任务de控制装置就称为嵌入式控制器

Embedded Chips: (嵌入式)一种特殊用途deCPU,通常放在非计算机系统,如:家用电器

EPIC: (explicitly parallel instruction code,并行指令代码)英特尔de64位芯片架构,本身不能执行x86指令,但能通过译码器来兼容旧有dex86指令,只是运算速度比真正de32位芯片有所下降

FADD: (Floationg Point Addition,浮点加)FCPGA(Flip Chip Pin Grid Array,反转芯片针脚栅格阵列)一种芯片封装形式,例:奔腾III 370

FDIV: (Floationg Point Divide,浮点除)FEMMS(Fast Entry/Exit Multimedia State,快速进入/退出多媒体状态) 在多能奔腾之中,MMX和浮点单元是不能同时运行de新de芯片加快了两者之间de切换,这就是 FEMMS

FFT: (fast Fourier transform,快速热欧姆转换)一种复杂de算法,可以测试CPUde浮点能力

FID: (FID:Frequency identify,频率鉴别号码)奔腾III通过ID号来检查CPU频率de方法,能够有效防止Remark

FIFO: (First Input First Output,先入先出队列)这是一种传统de按序执行方法,先进入de指令先完成并引退,跟着才执行第二条指令

FLOP: (Floating Point Operations Per Second,浮点 *** 作/秒)计算CPU浮点能力de一个单位

FMUL: (Floationg Point Multiplication,浮点乘)

FPU: (Float Point Unit,浮点运算单元)FPU是专用于浮点运算de处理器,以前deFPU是一种单独芯片,在486之后,英特尔把FPU与集成在CPU之内

FSUB: (Floationg Point Subtraction,浮点减)

HL-PBGA: (表面黏著、高耐热、轻薄型塑胶球状矩阵封装)一种芯片封装形式

IA: (Intel Architecture,英特尔架构)英特尔公司开发dex86芯片结构

ID: (identify,鉴别号码)用于判断不同芯片de识别代码

IMM: (Intel Mobile Module,英特尔移动模块)英特尔开发用于笔记本电脑de处理器模块,集成了CPU和其它控制设备

Instructions Cache: (指令缓存)由于系统主内存de速度较慢,当CPU读取指令de时候,会导致CPU停下来等待内存传输de情况指令缓存就是在主内存与CPU之间增加一个快速de存储区域,即使CPU未要求到指令,主内存也会自动把指令预先送到指令缓存,当CPU要求到指令时,可以直接从指令缓存中读出,无须再存取主内存,减少了CPUde等待时间

Instruction Coloring: (指令分类)一种制造预测执行指令de技术,一旦预测判断被相应de指令决定以后,处理器就会相同de指令处理同类de判断

Instruction Issue: (指令发送)它是第一个CPU管道,用于接收内存送到de指令,并把它发到执行单元IPC(Instructions Per Clock Cycle,指令/时钟周期)表示在一个时钟周期用可以完成de指令数目

KNI: (Katmai New Instructions,Katmai新指令集,即SSE) Latency(潜伏期)从字面上了解其含义是比较困难de,实际上,它表示完全执行一个指令所需de时钟周期,潜伏期越少越好严格来说,潜伏期包括一个指令从接收到发送de全过程现今de大多数x86指令都需要约5个时钟周期,但这些周期之中有部分是与其它指令交迭在一起de(并行处理),因此 CPU制造商宣传de潜伏期要比实际de时间长

LDT: (Lightning Data Transport,闪电数据传输总线)K8采用de新型数据总线,外频在200MHz以上

MMX: (MultiMedia Extensions,多媒体扩展指令集)英特尔开发de最早期SIMD指令集,可以增强浮点和多媒体运算de速度

MFLOPS: (Million Floationg Point/Second,每秒百万个浮点 *** 作)计算CPU浮点能力de一个单位,以百万条指令为基准

NI: (Non-Intel,非英特尔架构)

除了英特尔之外,还有许多其它生产兼容x86体系de厂商,由于专利权de问题,它们de产品和英特尔系不一样,但仍然能运行x86指令

OLG

A: (Organic Land Grid Array,基板栅格阵列)一种芯片封装形式

OoO: (Out of Order,乱序执行)Post-RISC芯片de特性之一,能够不按照程序提供de顺序完成计算任务,是一种加快处理器运算速度de架构(电脑知识)

PGA: (Pin-Grid Array,引脚网格阵列)一种芯片封装形式,缺点是耗电量大

Post-RISC: 一种新型de处理器架构,它de内核是RISC,而外围是CISC,结合了两种架构de优点,拥有预测执行、处理器重命名等先进特性,如:Athlon

PSN: (Processor Serial numbers,处理器序列号)标识处理器特性de一组号码,包括主频、生产日期、生产编号等

PIB: (Processor In a Box,盒装处理器)CPU厂商正式在市面上发售de产品,通常要比OEM(Original Equipment Manufacturer,原始设备制造商)厂商流通到市场de散装芯片贵,但只有PIB拥有厂商正式de保修权利

PPGA: (Plastic Pin Grid Array,塑胶针状矩阵封装)一种芯片封装形式,缺点是耗电量大

PQFP: (Plastic Quad Flat Package,塑料方块平面封装)一种芯片封装形式

RAW: (Read after Write,写后读)这是CPU乱序执行造成de错误,即在必要条件未成立之前,已经先写下结论,导致最终结果出错

Register Contention: (抢占寄存器)当寄存器de上一个写回任务未完成时,另一个指令征用此寄存器时出现de冲突

Register Pressure: (寄存器不足)软件算法执行时所需de寄存器数目受到限制对于X86处理器来

说,寄存器不足已经成为了它de最大特点,因此AMD才想在下一代芯片K8之中,增加寄存器de数量

Register Renaming: (寄存器重命名)把一个指令de输出值重新定位到一个任意de内部寄存器在x86

架构中,这类情况是常常出现de,如:一个fld或fxch或mov指令需要同一个目标寄存器时,就要动用到寄存器重命名

Remark: (芯片频率重标识)芯片制造商为了方便自己de产品定级,把大部分CPU都设置为可以自由调节倍频和外频,它在同一批CPU中选出好de定为较高de一级,性能不足de定位较低de一级,这些都在工厂内部完成,是合法de频率定位方法但出厂以后,经销商把低档deCPU超频后,贴上新de标签,当成高档CPU卖de非法频率定位则称为Remark因为生产商有权力改变自己de产品,而经销商这样做就是侵犯版权,不要以为只有软件才有版权,硬件也有版权呢>1,Giga简称G,是表示数量的前缀,表示10^9,即10亿,比如9G,就是90亿。,2,表示浮点运算能力的单位是FLOPS(即“每秒浮点运算次数”,“每秒峰值速度”),而非“Float”。是“每秒所执行的浮点运算次数”(floating-point operations per second) 的缩写。它常被用来估算电脑的执行效能,尤其是在使用到大量浮点运算的科学计算领域中。因为 FLOPS 字尾的那个 S,代表秒,而不是复数,所以不能省略掉。
在这里所谓的“浮点运算”,实际上包括了所有涉及小数的运算。这类运算在某类应用软件中常常出现,而它们也比整数运算更花时间。现今大部分的处理器中,都有一个专门用来处理浮点运算的“浮点运算器”(FPU)。也因此 FLOPS 所量测的,实际上就是 FPU 的执行速度。而最常用来测量 FLOPS 的基准程式 (benchmark) 之一,就是 Linpack。
3,GigaFLOPS即每秒10亿次浮点运算,也是是描述计算机浮点运算能力的单位,现在的主流CPU一般在20-60 GFLOPS之间。


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

原文地址: http://outofmemory.cn/yw/13131193.html

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

发表评论

登录后才能评论

评论列表(0条)

保存