ReadingLab/Discussion-for-Cpp

“类型直接实现到计算机硬件中”?

SlothSimon opened this issue · 2 comments

在读c++ primer 第五版3.1节前面一段话的时候,看到一句说是,诸如int, char之类的类型是直接实现到计算机硬件中,而更高级的类型还没能直接实现到硬件。

我想问的是:

  1. 什么是“类型直接实现到计算机硬件中”?
  2. 为什么int, char之类的可以直接实现到硬件,而更高级的类型未直接实现到硬件?

谢谢!

pezy commented

我没看中文版, 但就你摘出来这句话, 我觉得翻译的有些不严谨. 原文如下:

These types represent facilities present in most computer hardware, such as
numbers or characters. The standard library defines a number of additional types of a
higher-level nature that computer hardware usually does not implement directly.

注意:

  1. 诸如 int, char, 是直接体现在大部分硬件中.
  2. 高级特性, 是通常没有直接地被硬件实现.
  1. 什么是“类型直接实现到计算机硬件中”?

硬件编码中就有基本类型的概念, 譬如 CPU 中就包含了 ALU(整形运算器), FPU(浮点运算器) 等, 汇编语言将其一一封装为类型, C 语言中又进一步的封装为 int and float. C++ 兼容 C 语言, 所以也就存在这样的"硬件类型".

  1. 为什么int, char之类的可以直接实现到硬件,而更高级的类型未直接实现到硬件?

虽然硬件在逐步更新换代, 但诸如 CPU, GPU 之类依然资源有限, 不可能无限制的将所有高级语言的特性直接放到硬件去实现. 也违背了计算机的系统结构. 譬如上述那些硬件仅可利用小巧但极快的寄存器进行缓存运算结果, 而高级程序语言, 却可以利用操作系统分配的大配额内存. 这也决定了, 硬件无法去实现一些高级语言的特性. 况且, 高级语言的人性化封装, 必然会拖慢执行效率, 这违背了硬件追求的是极致的速度的宗旨.

感谢解答!看来高级类型不是不能实现,只是进行trade-off时实现的性价比不高。