《在同步多线程机上使用比较和传送指令的可靠执行.pdf》由会员分享,可在线阅读,更多相关《在同步多线程机上使用比较和传送指令的可靠执行.pdf(20页珍藏版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 102439561 A (43)申请公布日 2012.05.02 C N 1 0 2 4 3 9 5 6 1 A *CN102439561A* (21)申请号 201080022638.5 (22)申请日 2010.04.27 12/432,146 2009.04.29 US G06F 9/38(2006.01) G06F 11/16(2006.01) (71)申请人超威半导体公司 地址美国加利福尼亚州 (72)发明人兰加纳坦苏达卡尔 诺恩T阔奇 (74)专利代理机构上海胜康律师事务所 31263 代理人李献忠 (54) 发明名称 在同步多线程机上使用比较和传送指令的。
2、可 靠执行 (57) 摘要 本发明提供在同步多线程机上进行高效且可 靠执行的系统和方法。处理器设置在可靠执行模 式(REM)中,以在任务关键型软件应用程序的执 行过程中检测可能的错误。只有两个线程可经配 置以在该模式中运行。浮点存储和整数变换一元 指令可转换成新的二元指令。每个新指令具有两 个源操作数,对应于不同线程的每个源操作数由 相同逻辑寄存器编号指定为所述原始一元指令的 单个源操作数。所有其他指令可进行复制,其中 所述原始指令及其副本分配给不同线程。在使用 所述新指令与实例化的整数独立群集通信时,同 步多线程(SMT)浮点逻辑可能只能够提供锁步执 行。在所述两个源操作数就绪之前,所述新指。
3、令无 法开始,其中所述两个源操作数随后将进行比较 以确定任何不匹配或错误。 (30)优先权数据 (85)PCT申请进入国家阶段日 2011.11.23 (86)PCT申请的申请数据 PCT/US2010/032514 2010.04.27 (87)PCT申请的公布数据 WO2010/126868 EN 2010.11.04 (51)Int.Cl. (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书 3 页 说明书 12 页 附图 4 页 CN 102439571 A 1/3页 2 1.一种系统,包括: 计算机程序的高速缓冲存储指令;以及 处理器; 其中所述处理器经配置以执行。
4、以下操作: 响应于确定所述指令的原始指令对应于第一指令类型,复制所述原始指令以创建所述 原始指令的副本; 响应于确定所述指令的所述原始指令对应于将由第一功能单元执行的第二指令类型, 不复制所述原始指令,其中所述第一功能单元具有M个副本,每个副本对应于多个线程的 两个或更多线程;以及 响应于确定源操作数从第一线程就绪且源操作数从所述多个线程中的至少一个其他 线程就绪,执行所述第二指令类型的所述原始指令。 2.根据权利要求1所述的系统,其特征在于,响应于执行所述第二指令类型的所述原 始指令,所述处理器进一步经配置以将单个结果从所述第一功能单元传输到对应于所述第 一线程的第二功能单元,以及传输到对应。
5、于所述多个线程中的另一个线程的第三功能单 元。 3.根据权利要求2所述的系统,其特征在于,响应于确定所述原始指令对应于第一指 令类型,所述处理器进一步经配置以执行以下操作: 将所述原始指令分配给所述多个线程中的第一线程;以及 将所述原始指令的所述副本分配给与所述第一线程不同的至少一个线程。 4.根据权利要求2所述的系统,其特征在于,响应于执行所述第二指令类型的所述原 始指令且确定每个源操作数就绪,所述处理器进一步经配置以将每个源操作数的值互相比 较。 5.根据权利要求4所述的系统,其特征在于,所述处理器进一步经配置以比较所述第 一指令类型的所述原始指令的结果和所述原始指令的至少一个副本的结果。。
6、 6.根据权利要求5所述的系统,其特征在于,所述处理器进一步经配置以响应于通过 以下项中的一项或多项检测到不匹配而传输错误信息:对所述结果进行的比较,以及对所 述源操作数进行的比较。 7.根据权利要求6所述的系统,其特征在于,所述第一功能单元是整数执行单元且所 述第二功能单元是浮点单元。 8.根据权利要求7所述的系统,其特征在于,所述第一指令类型是以下项中的一项或 多项:浮点存储指令和浮点整数变换指令。 9.一种方法,包括: 响应于所述指令的原始指令对应于第一指令类型,复制所述原始指令以创建所述原始 指令的副本; 响应于所述指令的所述原始指令对应于将由第一功能单元执行的第二指令类型,不复 制所。
7、述原始指令,其中所述第一功能单元具有M个副本,每个副本对应于多个线程中的两 个或更多线程;以及 响应于源操作数从第一线程就绪和从所述多个线程中的至少一个其他线程就绪,执行 所述第二指令类型的所述原始指令,其中每个源操作数由所述原始指令的相同寄存器编号 权 利 要 求 书CN 102439561 A CN 102439571 A 2/3页 3 指定。 10.根据权利要求9所述的方法,其特征在于,响应于执行所述第二指令类型的所述原 始指令,所述方法进一步包括将单个结果从单个第一功能单元传输到对应于所述第一线程 的第二功能单元,以及传输到对应于所述多个线程中的另一线程的至少一个其他第二功能 单元,其。
8、中所述第二功能单元具有N个副本,每个副本对应于所述多个线程中的单个不同 线程,且其中N是大于M的整数。 11.根据权利要求10所述的方法,其特征在于,响应于确定所述原始指令对应于第一 指令类型,所述方法进一步包括: 将所述原始指令分配给所述多个线程中的第一线程;以及 将所述原始指令的所述副本分配给与所述第一线程不同的至少一个线程。 12.根据权利要求10所述的方法,其特征在于,响应于执行所述第二指令类型的所述 原始指令且每个源操作数就绪,所述方法进一步包括比较每个源操作数的值。 13.根据权利要求12所述的方法,其特征在于,所述方法进一步包括比较所述第一指 令类型的所述原始指令的结果和所述原始。
9、指令的至少一个副本的结果,其中所述结果在相 同的管线阶段中计算得到。 14.根据权利要求13所述的方法,其特征在于,所述方法进一步包括响应于通过以下 项中的一项或多项检测到不匹配而传输错误信息:对所述结果进行的所述比较,以及对所 述源操作数进行的所述比较。 15.根据权利要求14所述的方法,其特征在于,所述第一功能单元是浮点单元且所述 第二功能单元是整数执行单元。 16.根据权利要求15所述的方法,其特征在于,所述第一指令类型是以下项中的一项 或多项:浮点存储指令和浮点整数变换指令。 17.一种浮点协同处理器,包括: 经配置以与指令提取单元、高速缓冲存储器,以及两个或更多整数执行群集通信的接 。
10、口,每个整数执行群集对应于多个线程中的单个不同线程; 存储元件;以及 电路,其中所述电路经配置以执行以下操作: 响应于所述指令的原始指令对应于第一指令类型,复制所述原始指令以创建所述原始 指令的副本; 响应于所述指令的所述原始指令对应于将由第一功能单元执行的第二指令类型,不复 制所述原始指令,其中所述第一功能单元具有M个副本, 每个副本对应于所述多个线程中的两个或更多线程;以及 响应于源操作数从第一线程就绪和从所述多个线程中的至少一个其他线程就绪,执行 所述第二指令类型的所述原始指令,其中每个源操作数由所述原始指令的相同寄存器编号 指定。 18.根据权利要求17所述的浮点协同处理器,其特征在于。
11、,响应于执行所述第二指令 类型的所述原始指令,所述电路进一步经配置以将单个结果从单个第一功能单元传输到对 应于所述第一线程的整数执行群集,以及传输到对应于所述多个线程中的另一线程的至少 一个其他整数执行群集,其中所述整数执行群集具有N个副本,每个副本对应于所述多个 权 利 要 求 书CN 102439561 A CN 102439571 A 3/3页 4 线程中的单个不同线程,且其中N是大于M的整数。 19.根据权利要求18所述的浮点协同处理器,其特征在于,响应于确定所述原始指令 对应于第一指令类型,所述电路进一步经配置以执行以下操作: 将所述原始指令分配给所述多个线程中的第一线程;以及 将所。
12、述原始指令的所述副本分配给与所述第一线程不同的至少一个线程。 20.根据权利要求18所述的浮点协同处理器,其特征在于,响应于执行所述第二指令 类型的所述原始指令且每个源操作数就绪,所述电路进一步经配置以比较每个源操作数的 值。 权 利 要 求 书CN 102439561 A CN 102439571 A 1/12页 5 在同步多线程机上使用比较和传送指令的可靠执行 技术领域 0001 本发明涉及计算系统,更确切地说,涉及在同步多线程机上的高效可靠执行。 背景技术 0002 任务关键型软件应用程序需要具备高可靠性。此类应用程序的某些实例包括财务 和银行软件、数据库和军事应用程序。软件测试方法可用。
13、于验证和确认软件应用程序是否 已达到预定的质量水平。然而,用于执行应用程序的硬件平台,例如微处理器,可能会产生 问题。尽管可像软件应用程序一样,事先对微处理器进行测试以确保达到预定的质量要求, 但是综合所有输入和先决条件,例如初始状态,进行测试是不可行的。此外,除功能错误之 外,现代微处理器中可能同时出现硬错误,例如固定型故障,和软错误,例如存储节点上辐 射诱发的错误。 0003 由于下一代新处理器的节点电容和供电电压会随时间的推移而下降,因此存储在 节点上的电荷量也会减少。基于这一事实,节点更易受到由宇宙射线、阿尔法粒子和中子等 高能粒子引起的辐射诱发的软错误的危害。这种辐射会在晶体管的源区。
14、和漏区产生将由源 极和漏极二极管传输的少数载子。存储在节点上的电荷相对于总电荷的变化可能是一个相 当大的百分数,从而超出电路的噪声极限并改变节点的存储状态,其中对于每一代产品而 言,所述电荷变化是不断下降的。尽管这种辐射不会对电路造成永久损坏,但可能出现逻辑 故障。 0004 基于上述原因,静态随机存取存储器(SRAM)等存储器使用错误校正码(ECC)来检 测并更正软错误。触发性电路等时序元件可能会在设计中使用更大的电容节点或冗余销存 器来应对软错误。然而,组合逻辑内的节点,例如整数和浮点功能单元,同样容易受到软错 误的危害。因此,针对功能错误和硬错误的测试并未证明组合逻辑不受软错误的危害,而。
15、这 在任务关键型应用程序中是不可取的。 0005 无论错误是由功能故障、硬错误还是软错误引起的,任务关键型应用程序可能都 难以容忍出现任何错误,且可能不允许重复执行特定的数据集。为了确保应用程序在特定 硬件上正确运行且为了检测错误,可使用检查点以并行执行两次的方式运行应用程序。在 每个检查点上,可对每次执行的结果数据进行比较,所述结果数据应该是相同的。因此,同 步执行是以锁步方式运行的。检测点处的比较所检测出的任何差异都可能标记为错误。两 次执行的同步执行操作可以回到前一次成功的检查点处并从相应检查点重新并行执行。此 外,标记或警告可能会报告给用户。用户可决定重新执行应用程序,看看有问题的检查。
16、点处 是否再次出现差异,也可以决定在确定结果数据的差异时排除应用程序的故障。 0006 然而,高效地运行并行的锁步执行过程可能十分困难。例如,出于直接存储器存取 (DMA)次数不一致以及刷新操作不一致等原因,使用两个微处理器可能无法实现锁步执行, 其中每个微处理器同步执行应用程序的一个副本且与另一个微处理器同时开始执行。因 此,使用一个具有多个相同硬件和功能单元的微处理器更好。 0007 许多现代微处理器使用多个相同内核来实施多线程操作,其中每个内核可对单独 说 明 书CN 102439561 A CN 102439571 A 2/12页 6 的软件线程以与其他内核同步的方式独立运行。 000。
17、8 实现任务关键型应用程序的锁步执行的一种方式是在微处理器内的两个相同内 核上同步执行应用程序和所述应用程序的副本。如果每个内核接收到相同的指令,例如在 第一内核中接收到原始指令且在第二内核中接收到所述指令的相同副本,则可在每个时钟 周期内进行相关数据的比较。因此,可实现任务关键型应用程序的锁步执行。 0009 然而,可能有多种不同因素会中断此类锁步执行。例如,并非所有硬件资源都可以 进行复制,以在微处理器内实现多线程操作。浮点单元(FPU)包括复杂的逻辑,会占用许多 芯片内空间。此外,FPU操作也不会经常执行。因此,设计师并不倾向于在芯片上为浮点逻 辑制造独立且昂贵的副本。相反,FPU和芯片。
18、上其他潜在的硬件资源的多线程操作可通过 同步的多线程(SMT)来实现。 0010 正如多线程的情况一样,在SMT中,源自超过一个线程的指令可在任何指定的管 线阶段同时执行,且可用于隐藏存储器延迟并提高单位硬件使用量的计算能力。但是,SMT 是通过复制处理器的某些部分来工作的,例如存储架构状态的部分,而不是复制主要的执 行资源。这就让配有SMT的处理器在表面上对主机操作系统显示为两个“逻辑”处理器。所 述操作系统可同步调度两个或多个线程或程序。在当前线程未使用不具SMT功能的处理器 中的执行资源时,且尤其是在处理器因高速缓存失败而停止时,分支预测错误,或者说配备 SMT的处理器可能使用这些执行资。
19、源来执行另一个预定的线程。 0011 SMT硬件,例如FPU,不会以锁步方式执行两个线程的操作。因此,与硬件副本,例 如两个独立的整数群集副本,的任何通信都会中断所述两个整数群集内的锁步执行。此外, 当微处理器以可靠执行模式运行时,为了不降低所述微处理器的性能,最好不要修改任何 调度程序和重命名逻辑,以及在所述整数群集之间传递信号,以便同步从FPU接收到的非 锁步信号。 0012 鉴于上述情况,需要用于在同步多线程机上进行高效且可靠执行的高效方法和机 制。 发明内容 0013 本发明涉及在同步多线程机上进行高效且可靠执行的系统和方法。在一个实施例 中,本发明提供包括高速缓冲存储器和处理器的计算。
20、机系统。所述处理器可包括同步多线 程(SMT)浮点单元(FPU)和多实例化整数独立群集,其中每个群集对应于不同的线序(硬 件线程)。在可靠执行模式(REM)中,处理器可经配置以仅对两个线程操作。任务关键型软 件应用程序的指令可在所述处理器上执行。从FPU传输到整数群集的非浮点外部操作的每 个指令都经过复制。源指令分配到第一线程。相同的副本指令分配到第二线程。 0014 处理器前端和整数群集可以锁步方式执行所述两个线程的这些指令。包括两个结 果的比较结果的检查点可在指令引退或执行完成阶段出现,具体取决于设计要求。不匹配 可能导致处理器将错误信息传送到所述高速缓冲存储器中的预定位置,供用户进行检查。
21、。 0015 从FPU传输到整数群集的浮点外部操作的每个指令都转换成新指令。通常情况 下,浮点外部操作是一元指令,例如浮点存储指令或浮点整数变换指令。如果两个线程是在 REM操作的过程中运行的,则此类指令将转换成二元指令。两个源操作数对应于每个运行线 程,且由相同的逻辑注册号指定为第一指令的单个源操作数。 说 明 书CN 102439561 A CN 102439571 A 3/12页 7 0016 在执行此类新指令的过程中,FPU需要等待两个源操作数就绪,这是浮点调度程序 的正常操作。这两个源操作数的比较应确定匹配情况。如果出现不匹配情况,则如上所述, 所述处理器将错误信息传送到所述高速缓冲。
22、存储器中的预定位置,供用户进行检查。存储 或整数变换操作仍然可能继续,也可能暂停执行,具体取决于所需的设计。如果出现匹配情 况,则FPU将结果同步传送到所述整数群集。因此,所述浮点操作可以不同步执行,但从FPU 到整数群集的传输实现了同步操作。所述处理器继续以锁步方式执行。 0017 在另一个实施例中,本发明提供像多实例化整数独立群集一样,从指令提取单元 接收指令的SMT FPU。FPU内的逻辑经配置以在处理器处于REM操作模式时执行上述的所 有步骤。 附图说明 0018 图1为说明示例性微处理器的一个实施例的概括性方框图。 0019 图2为说明进行乱序执行的通用处理器内核的一个实施例的概括性。
23、方框图。 0020 图3A为用于在同步多线程处理器上高效且可靠执行的方法的一个实施例的流程 图。 0021 图3B为用于在同步多线程处理器上高效且可靠执行的方法的一个实施例的流程 图。 0022 尽管本发明可能有多种修改或替代形式,但本专利申请文件以举例的方式展示了 特定实施例并进行了详细介绍。但应了解,本专利申请文件的附图和详细说明并不旨在将 本发明限定于所揭示的特定形式,相反,本发明由随附的权利要求书定义,包括落在本发明 的精神和范围内的所有修改、等效物和替代。 具体实施方式 0023 以下说明中列出了许多具体细节,以帮助您深入了解本发明。但是,所属领域的一 般技术人员应了解,本发明可在没。
24、有这些具体细节的情况下进行实践。在某些情况下,本专 利申请文件并未详细说明公知的电路、结构和技术,以免使得本发明难以理解。 0024 图1展示了示例性微处理器100的一个实施例。微处理器100可包括内存控制器 120、接口逻辑140、一个或多个处理单元115,纵横制互联逻辑116和共享高速缓冲存储器 子系统118,其中所述一个或多个处理单元可包括一个或多个处理器内核112和相应的高 速缓冲存储器子系统114。在一个实施例中,微处理器100的图示功能并入单个集成电路 中。 0025 接口140通常提供输入/输出(I/O)装置与微处理器100中的共享高速缓冲存 储器子系统118和处理单元115之间。
25、的接口。在本专利申请文件中,通过参考数字后跟字 母指代的元件可统一仅用数字指代。例如,处理单元115a至115b可统一指代为处理单元 115,或单元115。I/O装置可包括打印机、键盘、显示屏、相机、读卡器、硬盘或软盘驱动器或 驱动器控制器、网络接口卡、视频加速器、音频卡、调制解调器等外围网络装置,通用接口总 线(GPIB)或现场总线接口卡等多种数据采集卡,或其他装置。此外,接口140可用于与其 他微处理器和/或其他处理节点通信。通常情况下,接口逻辑140可包括缓冲器,所述缓冲 器用于从相应链路接收信息包,并缓冲即将经由相应链路传输的信息包。任何合适的流控 说 明 书CN 102439561 。
26、A CN 102439571 A 4/12页 8 机制可用于向和从微处理器100传输信息包。 0026 微处理器100可经由相应的内存控制器120连接到相应存储器。存储器可包括任 何合适的存储装置。例如,存储器可包括一个或多个RAMBUS动态随机存取存储器(DRAM)、 同步DRAM(SDRAM)、DRAM、静态RAM等。微处理器100的地址空间可分给多个存储器。每个 微处理器100或包括微处理器100的相应处理节点可包括存储器映射,所述存储器映射用 于确定地址与存储器之间的映射关系,并确定应将存储器的特定地址请求路由到哪个微处 理器100或处理节点。在一个实施例中,某个地址的一致性点是连接到。
27、对应于所述地址的 内存存储字节的内存控制器120。内存控制器120可包括用于通过接口连接到存储器的控 制电路。此外,内存控制器120可包括用于对存储器请求进行排列的请求队列。 0027 一般而言,纵横制互联逻辑116经配置以响应在连接到接口140的链路上接收到 控制信息包,根据处理器内核112和/或高速缓冲存储器子系统114生成控制信息包、根据 由内存控制器120选择的服务事务生成探针命令和响应信息包,以及将包括微处理器的中 间节点的信息包经由接口逻辑140路由到其他节点。接口逻辑140可包括接收信息包,并 将所述信息包与纵横制互联件116所使用的内部时钟同步的逻辑。纵横制互联件116可经 配。
28、置以将存储器请求从处理器内核112传输到共享高速缓冲存储器子系统118,或传输到 内存控制120和较低级别的存储器子系统。另外,纵横制互联件116可经由内存控制器120 将所接收到的内存线和控制信号从较低级别的存储器传送到处理器内核112和高速缓冲 存储器子系统114和118。纵横制互联件116、内存控制器120、接口140和处理器单元115 之间的互联总线实施可包括任何合适的技术。 0028 高速缓冲存储器子系统114和118可包括经配置以存储数据块的高速缓冲存储 器。高速缓冲存储器子系统114可并入相应处理器内核112内。或者,高速缓冲存储器子 系统114可通过背面高速缓冲配置或内联配置(。
29、如果需要)连接到处理器内核112。此外, 高速缓冲存储器子系统114可作为高速缓冲存储器的分级进行实施。如果需要,靠近处理 器内核112(在分级内)的高速缓冲存储器可并入处理器内核112中。在一个实施例中, 高速缓冲处理器子系统114各自代表第二级高速缓冲结构,且共享高速缓冲存储器子系统 118代表第三级高速缓冲结构。 0029 高速缓冲存储器子系统114和共享高速缓冲存储器子系统118可包括连接到相应 高速缓冲控制器的高速缓冲存储器。处理器内核112包括用于根据预定义的通用指令集执 行指令的电路。例如,可选择x86指令集架构。或者,可选择Alpha、PowerPC或其他任何通 用指令集架构。。
30、通常情况下,处理器内核112会对数据和指令分别访问高速缓冲存储器子 系统114。如果未在高速缓冲存储器子系统114或共享高速缓冲存储器子系统118中找到 请求块,则可生成读取请求并经由指定路线传输到控制器120中缺失块所映射的位置。 0030 图2说明进行乱序执行的通用处理器内核200的一个实施例。指令高速缓冲存储 器(i-cache)和相应的快速重编址缓冲器(TLB)202可为软件应用程序和地址存储指令,以 便访问所述指令。高速缓冲存储器202和222可位于处理器内核200内,或位于所述处理器 内核的外部,例如位于图1所示的高速缓冲存储器子系统114中。如果没有i-cache缺失, 则在每个。
31、时钟周期中,指令提取单元(IFU)204可从i-cache 202提取多个指令。IFU 204 可包括程序计数器,所述程序计数器中设有指向在i-cache 202中提取的下一指令的地址 的指针,所述地址可与i-TLB中的地址进行比较。IFU 204还可包括分支预测单元,以在执 说 明 书CN 102439561 A CN 102439571 A 5/12页 9 行单元确定后面的管线阶段中的实际结果之前预测条件指令的结果。 0031 解码器单元206对所提取的多个指令的操作码进行解码,且可在有序退出队列 中,例如重排缓冲器208中,分配条目。在重排缓冲器208内分配后,条目可在整数队列212 和。
32、浮点队列216内分配。在执行单元210内分配之后或同时,可分配加载/存储单元220 内的输入队列的条目。条目在执行单元210和/或加载/存储单元220中的分配即视为调 度。下文将在说明存储器访问后讨论执行单元210。 0032 加载和存储操作等存储器访问会向加载/存储单元220发出。加载/存储单元 220可包括执行存储器访问指令的队列和逻辑。此外,验证逻辑可存在于加载/存储单元 220中,以确保加载指令从正确的最早存储指令中接收转发数据。加载/存储单元220可将 存储器访问请求224发送到芯片上的一级或多级数据高速缓冲存储器(d-cache)222。每一 级高速缓冲存储器可具有各自的TLB,所。
33、述TLB用于与存储器请求224进行地址比较。每一 级高速缓冲存储器222可以连续或并行方式进行搜索。如果未在高速缓冲存储器222中找 到请求的内存线,则存储器请求224将发送给较低级别的高速缓冲存储器,例如高速缓冲 存储器114和118,或可能发送给片外存储器。连续或并行搜索、可能发送给其他存储器的 请求,以及等待所请求的内存线的抵达可能会耗费大量的时钟周期。 0033 源自执行单元210和加载/存储单元220的结果可在公用数据总线230中显示。 所述结果可发送给重排缓冲器208。在一个实施例中,重排缓冲器208可为先进先出(FIFO) 队列,所述先进先出队列用于确保根据程序的顺序实现指令的有。
34、序退出。此时,接收到对应 结果的指令即标记为退出。如果指令位于队首,则可将所述指令结果发送至相应的架构寄 存器文件。每个队列212和216可拥有相应的架构寄存器文件。架构寄存器文件可拥有处 理器内核200的通用寄存器的架构状态。因此重排缓冲器中的指令即可有序退出且所述指 令的队首指针可根据程序顺序中的后续指令进行调整。 0034 公用数据总线230上的结果可发送至执行单元210,以便将相应值转发给等待结 果的指令的操作数。例如,算数指令的操作数可取决于前一算数指令的结果,或者加载指令 可能需要由功能单元214中的地址生成单元(AGU)计算得出的地址。当这些等待指令拥有 针对各自操作数的值且硬件。
35、资源能够执行所述指令时,所述指令可乱序从相应队列212和 216向功能单元214和216或加载/存储单元220中的合适资源发出。 0035 未提交(非退出)的存储器访问指令具有位于加载/存储单元220中的条目。对 于源自最早未提交的旧存储指令的传输中(未提交)的加载指令而言,所述指令的转发数 据值可置于公用数据总线230上,或者可在加载/存储单元220内方便地路由到加载缓冲 器中的合适条目。 0036 返回到执行单元210,队列212和216可存储等待各自的操作数变为可用的相应 整数和浮点指令。寄存器重命名和执行调度可在队列212和216内,或未图示的周围的相 应电路内进行。当操作数可用且硬件。
36、资源也可用时,指令可从队列212和216向整数功能 单元214、浮点功能单元218,和/或加载/存储单元220乱序发出。每一组整数功能单元 214可包括算数逻辑单元(ALU),所述算数逻辑单元用于进行整数计算,例如加、减、地址生 成,以及确定分支条件指令的结果。浮点功能单元218可包括用于执行浮点加、减、乘、除、 平方根、整数到浮点的转换、浮点到整数的转换,或其他的电路。 0037 在一个实施例中,多个整数功能单元214可进行实例化,以提高微处理器指令处 说 明 书CN 102439561 A CN 102439571 A 6/12页 10 理量。例如,处理器内核200可经配置以执行多个软件执。
37、行线程。微处理器100的操作系 统,以及相应的处理器内核200会针对软件应用程序分配存储区。当软件应用程序经过编 译后,所述应用程序可包括多个程序。在此类实施例中,每个程序可拥有各自的资源,例如 存储器图像,或执行应用程序之前的指令实例和数据。此外,每个程序可包括程序专用信 息,例如处理代码、数据以及可能堆栈的地址空间;数据和控制寄存器中的变量,例如栈指 针、通用和浮点寄存器、程序计数器等;以及操作系统描述符,例如stdin、stdout等,和安 全属性,例如处理器拥有者和程序的权限集。 0038 软件应用程序的每个程序可进一步分为多个软件线程。许多现代微处理器经配置 以同步执行两个或多个软件。
38、线程。这些微处理器可具有两个或多个硬件线程(线序),所述 硬件线程可让操作系统的内核进行并行执行和分配。例如,对于多线程微处理器而言,根据 特定单元214内硬件资源的可用性,每个整数功能单元214可在每个时钟周期内接收特定 线程的一个或多个整数指令。从指令提取单元204到整数队列212的电路可进行修改以管 理处理器内核200的两个或更多线序,而不复制每个单元硬件。例如,拥有某个线程的架构 状态的寄存器可以复制,但执行硬件资源无法复制。 0039 在另一个实施例中,处理器内核200的多线程执行可包括整个群集的各个副本的 实例化,其中群集用于执行单个线程,且在一个实施例中,群集包括从解码器单元20。
39、6到指 令功能单元214的电路。在此类实施例中,该电路是指整数执行群集。在另一个实施例中, 浮点协同处理器可包括从解码器单元206到浮点功能单元218的电路。此浮点协同处理器 的实例化数量可能小于整数执行群集的实例化数量。在此类实施例中,每个浮点协同处理 器对应于两个或更多线程,而每个整数执行群集对应于单个不同的线程。指令提取单元204 可包括用于以下用途的电路:管理内核200中的多个线程,并为每个群集提供特定线程的 一个或多个可用的相应指令。在这种情况下,每个群集为线序(硬件线程)。 0040 对于将浮点单元218的多个副本实例化以伴随整数功能单元214的每个副本,尽 管从电路逻辑方面看来是。
40、可取的,但从硬件实施方面看来可能是不可取的。例如,浮点功能 单元(FPU)218可能包括复杂的逻辑,会占用许多芯片内空间。此外,浮点操作并不经常以 程序模式执行。因此,硬件设计师并不倾向于在芯片上为浮点功能单元218制造独立且昂 贵的副本。 0041 微处理器100以及相应的处理器内核200可以操作的可靠执行模式(REM)实施。 该模式可用于在任务关键性软件应用程序的执行过程中检测硬件软错误等执行错误的发 生。在一个实施例中,处理器内核200的浮点队列216和浮点功能单元218可以同步多线程 (SMT)模式运行,以便作为在两个独立的整数执行群集或两个独立的整数功能单元上执行 的两个独立的软件线。
41、程,其中这两个实施方案都为独立的线序。在一个实施例中,IFU 204 可作为SMT电路实施,以便为两个线序提供指令。从解码器单元206到整数功能单元214 的电路可作为芯片上的一个整数线序进行实例化。第二整数线序是所述第一线序的副本, 所述第二整数线序也可在芯片上实例化。 0042 两个整数线序可从IFU 204的输出到相应整数功能单元214以锁步方式运行。例 如,如果软件线程的指令提供给第一整数线序,且所述线序的副本提供给第二整数线序,则 这两个线序的每个管线阶段应在每个相应时钟周期的末尾得出相同的结果。多个检查点指 令可插入程序代码中,而不是在每个时钟周期的末尾进行比较。在每个检查点中,具。
42、体寄存 说 明 书CN 102439561 A CN 102439571 A 7/12页 11 器的内容的比较可对两个线序执行。如果对应的值匹配,则未检测到任何软错误,且执行过 程可以继续。在一个实施例中,如果出现不匹配情况,则执行过程会返回到最近一次成功检 查点,且执行过程可从程序代码中的该位置继续。在一个实施例中,警报可报告给操作系统 (OS)报告。在替代实施例中,警示报告可记录在位于存储器的预定位置处的日志文件中,供 用户仔细查看。 0043 在另一个实施例中,从解码器单元206到整数队列212的电路无法复制,但可作为 SMT单元实施。整数功能单元214可进行复制。再次指出,在一个实施例。
43、中,两个整数线序 的执行可从IFU 204的输出到相应整数功能单元214的输出以锁步方式运行。可按照上述 说明进行检查和比较。使用两个线序是出于说明的目的,且可能或预期会使用更多数量的 线序。例如,在替代实施例中,如上文关于程序所述,微处理器的电路可经配置以执行请求 两个或更多硬件线程(线序)的两个或更多软件线程。因此,三个或更多整数线序的执行 可从IFU 204的输出到相应整数功能单元214的输出以锁步方式运行。 0044 根据上述的任一实施例,浮点队列216、浮点功能单元218、加载/存储单元 (LSU)220和高速缓冲存储器222可单独进行实例化,并从整数队列212和两个单独的实例 化整。
44、数功能单元214接收输入。如上所述,单个软件应用程序可通过在每个整数线序上以 锁步方式运行所述软件应用程序的两个副本来高度可靠地执行。但是,此技术无法应用到 浮点队列216和浮点功能单元218,因为无法确保源自不同线程的操作将会以锁步方式执 行。对于芯片的SMT部分,例如浮点功能单元218,可能没有足够的硬件资源来同步执行源 自两个软件线程的指令。因此,源自两个软件线程的这些指令可能会不同步执行,而不是锁 步执行。 0045 该问题的一种解决方案是迫使这两个软件线程在SMT浮点电路上锁步运行。但 是,该方案在复杂性、芯片内资源、额外的芯片内的线敷设方面将耗费大量成本,且还会在 无需REM操作时。
45、降低性能。该问题的另一个解决方案是让这两个软件线程的浮点指令在浮 点功能单元218上独立运行,并以异步方式生成结果。因此,对这两个软件线程的结果的核 对必须针对每个操作延迟,直到这两个软件线程中较晚的一个计算出结果。由于这种延迟 可能相当多,例如数百个时钟周期,且代码流中的每个操作都需要进行检查,因此设计人员 必须分配非常大的缓冲器来从这两个线程捕获结果,直到所述线程已经过安全检查。 0046 相反,可对REM操作使用某种技术,以便两个“单独”软件线程的两个指令,例如原 始指令和它的相同副本,可在多数时候在SMT浮点电路上不同步执行,同样地,所述两个软 件线程是原始软件线程和它的相同副本。这两。
46、个线程是同步的,且仅在尝试经由浮点域传 输结果时才进行偏差比较,因此能够确保对这两个整数群集的刺激是同步的。这可让整数 群集基于来源于浮点电路的所有传输检查源自这两个线程的相同响应,因此所述整数群集 可以维持锁步状态。 0047 现在转向图3A,图示的是方法300的一个实施例,其中所述方法用于在同步多线 程处理器上高效且可靠的执行。出于说明的目的,本实施例的各个步骤以连续顺序展示。但 是,某些步骤的顺序可能会异于图示的顺序,某些步骤可能会同时进行,某些步骤可能会与 其他步骤相结合,且某些步骤可能不存在于另一个实施例中。微处理器内的多线程处理器 内核在步骤302中设置为可靠执行模式(REM)。该。
47、操作可由程序代码指令、系统微代码指 令,由外部控制激活或解除激活的指定插针上的信号等执行。 说 明 书CN 102439561 A CN 102439571 A 8/12页 12 0048 在步骤304中,微处理器的指令提取单元从i-cache的指定地址中提取指令。在一 个实施例中,在REM操作过程中,微处理器可仅允许执行两个线序(硬件线程)。所提取的 每个指令可选择性地复制。例如,如果浮点指令未检测到在浮点电路的外部传输(条件性 步骤306),例如浮点存储指令、浮点整数变换指令等,则其他计算的这些指令将在步骤312 中复制。原始指令将视作第一软件线程的指令并发送到第一线序。指令副本将视作第二。
48、软 件线程的指令并在步骤314中发送到第二线序。 0049 指令检测和指令复制都可在解码器单元206、重排缓冲器208、执行队列212和 216,或设计人员选择的另一前端单元中进行。仅针对这些浮点外部操作的预解码电路可设 置在解码器单元206的前面。对于包括从解码器单元206到整数功能单元214的电路的内 核200,如果在所述内核中复制了整数内核,则可使用此技术。或者,解码器单元206的输出 信号可用于检测这些操作,且可在解码后进行复制。如果执行队列212和216的解码器单 元206的电路作为SMT电路实施,则可使用此技术。接下来,在步骤314中,原始指令和复 制指令分配给单独的线序,且在步骤。
49、316中,所述指令被重命名并调度。 0050 但是,如果浮点指令检测到在浮点电路外部传输(条件性步骤306),例如浮点存 储指令、浮点整数变换指令等,则该浮点外部操作或指令无法复制。这些指令需要从浮点功 能单元218到整数功能单元214的通信路径(走线)。由于没有功能单元218中的浮点逻 辑的副本,因此锁步执行将由于这些指令而在所有功能单元214和218中中断。因此,在步 骤308中,该指令类型可转换成新指令类型。而未复制的这一新的指令类型将分配给一个 可用线序。例如,该新指令类型可视作源软件线程的指令,且在处理器200中分配给它对应 的线序。 0051 例如,对于微处理器内两个线序的一个实施例,第一线序可具有32个浮点(FP) 寄存器,例如从f0到f31,且第二线序也一样。浮点单元FPU可能需要维持这两个线序的 状态,其中所述浮点单元可包括队列216和单元218的电路,或者,可包括自身的针对解码 单元206到队列216的操作的电路。FPU可请求至少64个逻辑寄存器,例如L0到L63,所 述逻辑寄存器拥有这两个线序的提交架构。从L0-L63到Strand0.FP0-Stran。