Arm 寄存器15中的程序计数器如何公开管道?

Arm 寄存器15中的程序计数器如何公开管道?,arm,microprocessors,Arm,Microprocessors,我有一个问题要问: “ARM将程序计数器放入寄存器r15,使其对程序员可见。有人在写ARM时说,这暴露了ARM的管道。他是什么意思,为什么?” 我们还没有在课堂上讨论管道,所以我不知道那是什么,我很难在网上理解这些材料。有人能帮我回答问题或帮助我理解,这样我就可以形成自己的答案吗 谢谢 事实并非如此,他们可能说的是程序计数器是执行指令之前的两条指令。但这并不意味着它是一个两个或三个深的管道,如果曾经是。在这一点上它什么也不暴露,就像MIPS中的分支阴影什么也不暴露一样。有教科书MIPS,有现实

我有一个问题要问:

“ARM将程序计数器放入寄存器r15,使其对程序员可见。有人在写ARM时说,这暴露了ARM的管道。他是什么意思,为什么?”

我们还没有在课堂上讨论管道,所以我不知道那是什么,我很难在网上理解这些材料。有人能帮我回答问题或帮助我理解,这样我就可以形成自己的答案吗


谢谢

事实并非如此,他们可能说的是程序计数器是执行指令之前的两条指令。但这并不意味着它是一个两个或三个深的管道,如果曾经是。在这一点上它什么也不暴露,就像MIPS中的分支阴影什么也不暴露一样。有教科书MIPS,有现实

管道没有什么神奇之处——它是装配线的计算机版本。你可以在适当的位置建造一辆汽车,并将发动机、车门、车轮等带到汽车上。或者你可以把汽车穿过一条装配线,有一个门站,一个轮子站等等。你有很多车同时在造,从大楼里出来的车的数量是每几分钟一辆,但这并不意味着一辆新车需要几分钟才能造出来。这只是意味着最慢的一步需要几分钟,从前到后所需的时间大致相同

一条指令有几个明显的步骤,加法要求您获取指令,对其进行解码,收集操作数并将其馈送给加法器(alu),然后获取结果并存储结果。其他说明具有类似的步骤和编号

您的教科书将使用诸如获取、解码和执行之类的术语。因此,如果在0x1000处获取指令,然后在0x1004处获取指令,然后在0x1008处获取指令,希望代码在没有分支的情况下线性运行,那么在获取0x1004时0x1000正在解码,在获取0x1008时0x1004正在解码,0x1000可能正在执行,这取决于。因此,当执行0x1000时,人们可能会认为程序计数器正在获取0x1008,这告诉我管道是如何工作的。事实并非如此,我可以有一个10000深的管道,指令看到的程序计数器是我喜欢的任何地址,相对于该指令的地址,我可以让它是0x1000,对于0x1000处的指令,它有一个12345深的管道。这只是一个定义,它可能在历史上的某个时刻,因为一个真正的设计和真正的管道,或者它可以一直这样定义

重要的是,定义由指令集声明和支持,如果他们说pc是指令加上一些偏移量,那么它需要始终是指令加上一些偏移量,或者需要记录异常,并匹配这些定义。完成。然后程序员可以编写程序员、编译器等等


管道的教科书问题(不是说它不是真的)是,假设我们的v8引擎用完了,我们在装配线上有12辆卡车,我们在生产线上生产卡车一段时间,然后我们生产v6的汽车。一旦他们完成了引擎的制造,我们的汽车零件已经准备好了,所以让我们把卡车从生产线移开,重新开始生产线,因为在装配线的N个步骤中,没有汽车从大楼的另一端出来,一旦第一辆车到达终点,那么每隔几分钟就会有一辆新车。我们不得不冲洗装配线。当您运行指令0x1000、0x1004、0x1008等时。如果您可以使管道保持更高效的运行,但0x1004是0x1100的分支,那么管道中可能有0x1008的指令和0x100c的指令,因此,我们必须刷新管道,开始从0x1100获取数据,在我们再次完成指令之前需要一些时钟周期,然后理想情况下,我们在完成指令之后,每个时钟完成一个,直到另一个分支。因此,如果你阅读关于mips或教育前身使用的主题的经典教科书,他们有分支阴影或其他类似术语的概念,分支后的指令总是被执行。因此,不是从管道中冲出N条指令,而是冲出N-1条指令,并获得一个额外的时钟,以便在分支进入管道后获得下一条指令。这就是默认情况下mips的工作原理,但是当你买一个真正的内核时,你可以关闭它,让它在分支后不执行指令。这是一个很好的教科书插图,可能是真实的,可能是真实的让我们建立一个mips类的计算机工程。但是现在使用的管道不用等那么久,就可以看到管道将是空的,并且可以很早开始提取,有时会获得超过一个时钟,而不是冲洗整个管道。如果它曾经这样做过,那么它目前并没有给MIPS带来任何优于其他设计的优势,也没有让我们接触到它们的管道。

事实并非如此,他们可能说的是,程序计数器是执行指令之前的两条指令。但这并不意味着它是一个两个或三个深的管道,如果曾经是。在这一点上它什么也不暴露,就像MIPS中的分支阴影什么也不暴露一样。有教科书MIPS,有现实

管道没有什么神奇之处——它是装配线的计算机版本。你可以在适当的位置建造一辆汽车,并将发动机、车门、车轮等带到汽车上。或者你可以把汽车穿过一条装配线,有一个门站,一个轮子站等等。你有很多车同时在造,从大楼里出来的车的数量是每几分钟一辆,但这并不意味着一辆新车需要几分钟才能造出来。这只意味着最慢的一步需要几分钟,从前面到英航