如何定义X is an N-bit CPU

原创 2007年10月16日 01:11:00

As has been discussed here, and in that old BYTE article, there is a *long*
history in computing that the phrase "X is an N-bit CPU" meant that tha
architecturally-visible size of the integer (or general-purpose) registers
was N bits.

Bus width is an *implementation* issue, and members of the same family can,
and often do, have a wide range of bus widths, and different bus widths in
different places (such as L2 caches, system bus, etc) ...

Family        Architecture        Bus widths
S/360        32            8, 16, 32, 64 (at least)
PDP-11        16            16, 32, 64 (at least)
VAX        32            32, 64 (at least)
X86 (386->)    32            16, 32, 64
68K        32            8, 16, 32, 64
MIPS (32)    32            32
MIPS (64)    64            32, 64, 128, 256
                    (note R8000 cache-bus <-> memory
                    == 256, and various members' L2 cache:
                    128 bits)

Size of FP registers is also irrelevant to common nomenclature: nobody calls
an X86 an 80-bit chip; many 32-bit architectures have 64-bit FP registers.

This common practice:
    - is not necessarily right.
    - is sometimes disobeyed by marketing.
    - but has been the common practice for a long time.

Traditionally, if a CPU was labeled N-bit:
    - integer registers were N bits
    - (convenient) addresses were N bits, or perhaps slightly less.
See BYTE, September 1991, page 136 for a big table of these for
various machines.

External bus widths, floating point widths, segmented addresses, etc,
have generally been irrelevant [for example, S/360s were 32-bit,
but had implementations of 8, 16, 32, and 64-bit busses, etc]

The MC68000 (ignoring high 8 bits) was a direct repeat of the S/360:
both 32-bit machines with 24-bit addresses, and no high-byte check,
and similar consequences.

Sometimes a CPU usefully supports 2 sizes of N, i.e.,
    X86: 16 & 32
    Alpha, MIPS R4K & later: 32- and 64-bit
at which point one may see both sizes used for operating systems,
i.e., using the smaller size of existing OSs, then converting to
the larger size over time.

User programs also vary, with several systems being willing to
mix user-level codes of different sizes.

Sometimes marketing diverges from engineering practice...
and these days, the tendency is to attempt to label something as 64-bit
if anything is 64-bit anywhere :-)

Despite the horror that this creates in various people, some people
use C with 64-bit "long long" and 32-bit pointers to get speedups on
32-bit code where big addresses are not relevant, but bigger
integer performance is, i.e., like on Nintendo N64s or various other
embedded applications.

STM32中的位带(bit-band)操作

支持了位带操作后,可以使用普通的加载/存储指令来对单一的比特进行读写。在 CM3 中, 有两个区中实现了位带。其中一个是 SRAM 区的最低 1MB 范围,第二个则是片内外设区的 最低 1MB范围。这...
  • gaojinshan
  • gaojinshan
  • 2013年09月09日 15:33
  • 26464

CSAPP深入理解计算机系统实验datalab解析

看完这一本《CSAPP深入理解计算机系统》
  • u014124795
  • u014124795
  • 2014年08月10日 18:00
  • 7858

使用VirtualBox在32位操作系统下虚拟64位OS

操作系统为32位的Windows7,准备使用VirtualBox虚拟一个64位Windows Server 2008 R2的操作系统。VirtualBox设置完,启动后报“Attempting to ...
  • pan_tian
  • pan_tian
  • 2014年03月29日 22:22
  • 7168

This is just a bit of fun. The idea came from an old magic t

  • 2006年02月23日 09:05
  • 6KB
  • 下载

error C3872: '0x3000': this character is not allowed in an identifier

编程时,出现如下的错误: Error 1 error C3872: '0x3000': this character is not allowed in an identifier Error...
  • o929778452o
  • o929778452o
  • 2012年01月09日 15:52
  • 1216

UnsatisfiedLinkError X.so is 64-bit instead of 32-bit之Android 64 bit SO加载机制

UnsatisfiedLinkError X.so is 64-bit instead of 32-bit的产生原因及64 bit SO是如何在Android上运行的。...
  • canney_chen
  • canney_chen
  • 2016年02月04日 11:07
  • 7820

Scene is unreachable due to lack of entry points and does not have an identifier for runtime access

警告: Scene is unreachable due to lack of entry points and does not have an identifier for runtime acc...
  • zhouxiangstudying
  • zhouxiangstudying
  • 2015年03月26日 17:53
  • 1168

An invalid form control with name='xxx' is not focusable

【相关的表单提交,不能跳转。】 有些表单,再输入表单数据之后,点击提交按钮不能提交,页面不能跳转,谷歌浏览器下会报标题的错误。 如图: 该问题起因:   当空字段具有所需的属性,并尝试发送的形式...
  • zstkst
  • zstkst
  • 2015年09月23日 11:19
  • 3219

Scala 学习笔记(二)— Everything is an object

Everything is an object 前言 Scala is a pure object-oriented language in the sense that everyt...
  • pianistOfSoftware
  • pianistOfSoftware
  • 2016年07月20日 17:40
  • 239

ValueOperations的increment方法ERR value is not an integer or out of range错误解释

最近在开发中,使用Redis来实现数据点击量的统计存储功能。为什么使用Redis?点击量之类的功能,需要频繁触发更新操作,而且高并发访问时,还需要考虑操作冲突导致数据不一致的问题。而Redis是内存型...
  • Mr_Errol
  • Mr_Errol
  • 2017年03月16日 12:49
  • 2155
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何定义X is an N-bit CPU
举报原因:
原因补充:

(最多只允许输入30个字)