一种支持同时多线程指令乱序发射的飞行记分牌处理方法_4

文档序号:9765798阅读:来源:国知局
位,需等指令Inst4即将写或已写P86,且指令Inst5即将写或已写P87时,才能允许指令Inst6发射到执行部件。
[0117]当指令7经过寄存器重命名站台后,各表状态如图3所示。
[0118]假定线程I的指令Inst4?Inst6先提交,则相关的操作依次如下:
[0119](l)Inst4:P49+P50 —》P85提交;从线程I的控制列表中头指针(条目O)中,读出历史物理寄存器号P42和飞行记分牌号F3,写入总空闲列表队尾(条目O),线程I的控制列表中头指针循环加“I”,总空闲列表队尾指针循环加“I” ;
[0120](2)Inst5:P85+P50—》P86提交;从线程I的控制列表中头指针(条目I)中,读出历史物理寄存器号P41和飞行记分牌号F4,写入总空闲列表队尾(条目I),线程I的控制列表中头指针循环加“I”,总空闲列表队尾指针循环加“I” ;
[0121](3)Inst6:P86+P49 —》P87提交;从线程I的控制列表中头指针(条目2)中,读出历史物理寄存器号P85和飞行记分牌号F5,写入到总空闲列表队尾(条目2),线程I的控制列表中头指针循环加“I”,总空闲列表队尾指针循环加“I” ;
[0122]线程I的指令Inst4?Inst6提交后,各表的状态如图4所示。
[0123]假定线程O的指令Instl发生异常,此时指令InstO还未提交,需继续执行,指令Instl?Inst3都需要回退。线程O的回退头指针指向条目2,回退尾指针指向条目I。
[0124]指令Inst3的目标寄存器无效,各表不需要任何回退操作;
[0125]回退指令Inst2的操作如下:
[0126](I)从线程O的控制列表回退头指针所指条目(条目2)中,读出飞行逻辑寄存器号R1、飞行物理寄存器号P84、飞行记分牌号F2、历史物理寄存器号P82、历史记分牌有效位“I”和历史记分牌号F0,线程O的控制列表的回退头指针循环减“I”,当前尾指针循环减“I” ;
[0127](2)以Rl为索引查询线程O的寄存器映射表,将Pl写入物理寄存器号域,将FO写入飞行记分牌号域,置飞行记分牌有效位为“I” ;
[0128](3)将P84和F2写入总空闲列表队尾(条目3),总空闲列表队尾指针循环加“I”;
[0129](4)置发射站台中飞行记分牌屏蔽位的第F2位为“O”。
[0130]回退指令Instl的操作如下:
[0131](5)从线程O的控制列表回退头指针所指条目(条目I)中,读出飞行逻辑寄存器号RO、飞行物理寄存器号P83、飞行记分牌号Fl、历史物理寄存器号PO、历史记分牌有效位“O”,线程O的控制列表的回退头指针循环减“I”,当前尾指针循环减“I” ;
[0132](6)以RO为索引查询线程O的寄存器映射表,将PO写入物理寄存器号域,置飞行记分牌有效位为“O”;
[0133](7)将P83和Fl写入总空闲列表队尾(条目4),总空闲列表队尾指针循环加“I”;
[0134](8)置发射站台中飞行记分牌屏蔽位的第Fl位为“O”。
[0135]指令Instl回退结束后各表的状态如图5所示。
【主权项】
1.一种支持同时多线程指令乱序发射的飞行记分牌处理方法,其特征在于,在寄存器重命名站台设置寄存器映射表、线程控制列表和总空闲列表;所述寄存器映射表以逻辑寄存器号为索引,条目数等于逻辑寄存器数;所述线程控制列表为循环队列结构,条目数等于空闲物理寄存器数,采用头尾指针管理,设置满标志;所述总空闲列表为循环队列结构,条目数等于空闲物理寄存器数,采用头尾指针管理,设置满标志,包括以下步骤: 初始时,将所有的飞行记分牌号按任意顺序与所有的空闲物理寄存器号一一绑定; 指令进行寄存器重命名时,给指令的目标寄存器号分配一个空闲物理寄存器号和与之绑定的飞行记分牌号; 指令提交时,该指令当前分配的飞行记分牌号与当前分配的物理寄存器号解除绑定,与该指令上一次分配的物理寄存器号重新绑定; 在指令回退时,该指令当前分配的飞行记分牌号与当前分配的物理寄存器号一起被回收,并恢复其目标寄存器上一次分配的飞行记分牌号和上一次分配的物理寄存器号。2.根据权利要求1所述的支持同时多线程指令乱序发射的飞行记分牌处理方法,其特征在于,所述寄存器映射表的每个列表条目包括:物理寄存器号,用于表示该条目对应的逻辑寄存器最后一次进行寄存器重命名时,所分配的空闲物理寄存器号,每个列表条目需设置初始映射的物理寄存器号;飞行记分牌有效位,用于表示本条目的飞行记分牌号是否有效,该位为“O”表示无效,为“I”表示有效,初始时,该位为“O” ;飞行记分牌号,用于表示本条目的物理寄存器号绑定的飞行记分牌号,初始时,该位无意义。3.根据权利要求1所述的支持同时多线程指令乱序发射的飞行记分牌处理方法,其特征在于,所述线程控制列表初始时,头指针和尾指针都指向条目O,满标志为“O”,所有条目无效,每个列表条目包括:飞行逻辑寄存器号,用于表示飞行指令的目标逻辑寄存器号;飞行物理寄存器号,用于表示本条目记录的飞行逻辑寄存器当前进行寄存器重命名时,所分配的空闲物理寄存器号;飞行记分牌号,用于表示本条目记录的飞行逻辑寄存器当前进行寄存器重命名时,所分配的空闲记分牌号;历史记分牌有效位,用于表示本条目记录的历史记分牌号是否有效,该位为“O”表示无效,为“I”表示有效;历史记分牌号,用于表示本条目记录的飞行逻辑寄存器上一次进行寄存器重命名时,所分配的飞行记分牌号;历史物理寄存器号,用于表示本条目记录的飞行逻辑寄存器上一次进行重命名时,所分配的物理寄存器号。4.根据权利要求1所述的支持同时多线程指令乱序发射的飞行记分牌处理方法,其特征在于,所述总空闲列表初始时,头指针和尾指针都指向条目O,满标志为“I”,所有条目都有效,每个列表条目包括:空闲物理寄存器号,用于表示当前处于空闲状态可分配给目标寄存器使用的物理寄存器号,初始时,各条目依次存放所有的空闲物理寄存器号;空闲记分牌号,用于表示与本条目的空闲物理寄存器号绑定的空闲记分牌号,初始时,各条目依次存放所有的空闲记分牌号。5.根据权利要求1所述的支持同时多线程指令乱序发射的飞行记分牌处理方法,其特征在于,指令进行寄存器重命名包括以下步骤: (1)从总空闲列表中获得空闲物理寄存器号和空闲记分牌号分配给目标寄存器,并分别作为飞行物理寄存器号和飞行记分牌号写入对应线程的控制列表队尾; (2)将目标寄存器作为飞行逻辑寄存器号写入对应线程的控制列表队尾; (3)以目标寄存器为索引查询对应线程的寄存器映射表,获得目标寄存器上一次映射的物理寄存器号、飞行记分牌有效位和飞行记分牌号,分别作为历史物理寄存器号、历史记分牌有效位和历史记分牌号写入对应线程的控制列表队尾; (4)用空闲记分牌号查询对应线程的寄存器映射表,进行内容相联匹配,找到飞行记分牌号等于空闲记分牌号的条目,置条目中的飞行记分牌有效位为“O” ; (5)以目标寄存器为索引查询对应线程的寄存器映射表,将空闲物理寄存器号和空闲记分牌号分别作为物理寄存器号和飞行记分牌号写入对应的条目,置飞行记分牌有效位为丄; (6)将空闲物理寄存器号、空闲记分牌号、以及控制列表尾指针与指令一起送发射站台; (7)总空闲列表的头指针循环加“I”,对应线程的控制列表队尾指针循环加“I”。6.根据权利要求1所述的支持同时多线程指令乱序发射的飞行记分牌处理方法,其特征在于,指令提交时包括以下步骤:从对应线程的线程控制列表中读出历史物理寄存器号和飞行记分牌号,并作为空闲物理寄存器号和空闲记分牌号写入到总空闲列表队尾,总空闲列表尾指针循环加“I”。7.根据权利要求1所述的支持同时多线程指令乱序发射的飞行记分牌处理方法,其特征在于,指令回退时包括以下步骤: (1)从对应线程的控制列表回退头指针所指条目中,读出飞行逻辑寄存器号、飞行物理寄存器号、飞行记分牌号、历史物理寄存器号、历史记分牌有效位和历史记分牌号,对应线程的控制列表的回退头指针循环减“I”,当前尾指针循环减“I” ; (2)以飞行逻辑寄存器号为索引查询对应线程的寄存器映射表,将历史物理寄存器号、历史记分牌有效位和历史记分牌号分别作为物理寄存器号、飞行记分牌有效位和飞行记分牌号写入对应线程的寄存器映射表; (3)将飞行物理寄存器号和飞行记分牌号分别作为空闲物理寄存器号和空闲记分牌号写入总空闲列表队尾,总空闲列表队尾指针循环加“I”。
【专利摘要】本发明涉及一种支持同时多线程指令乱序发射的飞行记分牌处理方法,本方法设置了与空闲物理寄存器数量相同的飞行记分牌,并将飞行记分牌号与空闲的物理寄存器号绑定。在指令进行寄存器重命名时,飞行记分牌号与绑定的空闲物理寄存器号一起被分配给指令的目标寄存器;在指令提交时,当前分配的飞行记分牌号与当前分配的物理寄存器号解除绑定,该飞行记分牌号与指令新释放的空闲物理寄存器号重新绑定;在指令回退时,当前分配的飞行记分牌号与当前分配的物理寄存器号一起被回收,并恢复其目标寄存器上一次分配的飞行记分牌号和上一次分配的物理寄存器号。本发明解决了在多个线程同时执行且共享同一套物理寄存器情况下,指令的乱序发射问题。
【IPC分类】G06F9/38, G06F9/30
【公开号】CN105528195
【申请号】CN201510883067
【发明人】尹飞, 胡向东, 李俊
【申请人】上海高性能集成电路设计中心
【公开日】2016年4月27日
【申请日】2015年12月3日
当前第4页1 2 3 4 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1