CISC指令长度

问题描述 投票:2回答:2

我想知道,在今天的大多数CISC架构中,CISC指令的最大可能长度是多少?

我还没有找到明确的答案,但理论上是it is suggested that it's 16 bytes long

在视频@大约15:00分钟,为什么演讲者建议“在理论上”以及为什么恰好16个字节?

cpu-architecture instruction-set
2个回答
5
投票

在实践中也是如此。对于x86-64,AMD将允许的指令长度限制为15个字节。之后,指令解码器将放弃并发出错误信号。

否则,使用多个指令前缀和覆盖字节,我们不确切地知道指令可以获得多长时间。如果我们允许冗余重复某些前缀,则完全没有限制。

Agner Fog描述了这个问题:

同时执行三个,四个或五个指令并不罕见。限制不是执行单元,我们有很多,但指令解码器。指令的长度可以是1到15个字节。如果我们想同时解码几条指令,那么我们就会遇到严重的问题。在知道第二条指令的开始位置之前,我们必须知道第一条指令的长度。因此,在解码第一条指令之前,我们无法解码第二条指令。解码本质上是一个串行过程,每个时钟周期能够解码多个指令需要很多硬件。换句话说,指令的解码可能是严重的瓶颈,并且指令代码越复杂就越糟糕。

请参阅他的博客文章here


4
投票

CISC是一种设计理念,而不是架构,因此没有“CISC指令长度”,只有特定CISC架构的指令长度(如x86或Motorola 68k)

具体谈论x86然后限制是15个字节。从理论上讲,指令长度可以是无限的,因为前缀可以重复。然而,这使得解码器很难在80286中开始将Intel限制为10个字节,然后在以后的ISA版本中将其限制为15个字节。有关它的更多信息,请阅读

另请注意,RISC并不意味着固定长度的指令。现代MIPS,ARM,RISC-V ... all have a variable length instruction mode增加代码密度

© www.soinside.com 2019 - 2024. All rights reserved.