CN102483708B - 处理器 - Google Patents

处理器 Download PDF

Info

Publication number
CN102483708B
CN102483708B CN201180003728.4A CN201180003728A CN102483708B CN 102483708 B CN102483708 B CN 102483708B CN 201180003728 A CN201180003728 A CN 201180003728A CN 102483708 B CN102483708 B CN 102483708B
Authority
CN
China
Prior art keywords
mentioned
thread
memory area
instruction
write
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201180003728.4A
Other languages
English (en)
Other versions
CN102483708A (zh
Inventor
森下广之
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Panasonic Intellectual Property Management Co Ltd
Original Assignee
Matsushita Electric Industrial Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Matsushita Electric Industrial Co Ltd filed Critical Matsushita Electric Industrial Co Ltd
Publication of CN102483708A publication Critical patent/CN102483708A/zh
Application granted granted Critical
Publication of CN102483708B publication Critical patent/CN102483708B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • G06F9/3009Thread control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/3004Arrangements for executing specific machine instructions to perform operations on memory
    • G06F9/30047Prefetch instructions; cache control instructions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30076Arrangements for executing specific machine instructions to perform miscellaneous control operations, e.g. NOP
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3824Operand accessing
    • G06F9/3834Maintaining memory consistency
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3838Dependency mechanisms, e.g. register scoreboarding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3836Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
    • G06F9/3851Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4812Task transfer initiation or dispatching by interrupt, e.g. masked
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Advance Control (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Multi Processors (AREA)

Abstract

提供能够保持多个指令与一个读出指令之间的依存关系的处理器。执行多个线程的处理器具有:设定单元,在执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令时,对表示是否向该存储器区域完成了写入的利用信息,设定表示该一个线程向该存储器区域完成了写入之意的内容,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用;以及控制单元,在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行另一线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,抑制执行该读出指令。

Description

处理器
技术领域
本发明涉及一种处理器,该处理器能够同时执行多个线程,通过有效率地收发多个线程间共享的数据,提高运算效率。
背景技术
进行数字化影像数据、声音数据等的压缩、解压缩等的媒体处理的运算量非常大。因此,正普及一种用于进行媒体处理的专用硬件和高性能的DSP(DigitalSignalProcessor,数字信号处理器)等。
这种媒体处理中,实用有很多种规格,包括MPEG(MovingPictureExpertsGroup,动态图像专家组)-2、MPEG-4、H.263、H.264等。因此,要求数字AV(Audio-Visual,视听)设备应对多种规格的媒体处理。而且,各媒体处理应用的复杂度提高,图像尺寸、声音的通道数等也有增加的倾向,运算量也进一步地增大。
因此,使用通过同时执行多个程序而大幅提高运算效率的高性能的多线程处理器(例如,参照非专利文献1)来提高性能。
多线程处理器中,在同时执行多个线程(程序)时,一个线程与另一线程存在依存关系,例如,有如下情况:在执行完一个线程的规定的写入指令之后,通过另一线程执行对由该规定的写入指令写入的部位的数据进行读出的读出指令。
作为实现该情况的处理的方法,专利文献1公开了该技术。
专利文献1中,通过管理存储器区域的地址来实现两者的依存关系。具体为,在专利文献1的技术中,对于所管理着的地址,当执行一个线程的写入指令时,能够由另一线程访问该地址示出的区域,即能够进行读出。
现有技术文献
专利文献
专利文献1:日本特表2006-500639号公报
非专利文献
非专利文献1:『ヘネシ一&パタ一ソンコンピュ一タァ一キテクチャ定量的ァプロ一チ第4版』,株式会社翔泳社,
p.185-192(ISBN978-4-7981-1440-8)
发明概要
发明要解决的课题
在由上述的技术中,依存关系如果针对一个写入指令则是有效的,但不能应对如下情况:例如,针对由一个地址表示的存储器区域,在执行多次写入指令之后进行读出指令的情况。这是因为将管理对象设为地址,在执行最初的写入指令时,由另一线程对以同一地址表示的存储器区域执行读出指令。因此,不能确保在执行多个写入指令之后执行读出指令这样的依存关系。
发明内容
因此,本发明的目的在于,提供一种能够保持多个指令和一个读出指令之间的依存关系的处理器及方法。
用于解决课题的手段
为了达成上述目的,本发明是执行多个多个线程的处理器,其特征在于,该处理器具有:设定单元,在执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令时,对表示是否向该存储器区域完成了写入的利用信息,设定表示该一个线程向该存储器区域完成了写入之意的内容,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用;以及控制单元,在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行其他线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域未完成写入的情况下,抑制执行该读出指令。
发明的效果
根据上述结构,处理器通过在执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令,进行对基于另一线程的该存储器区域中存在的数据的读出,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用。即,处理器在确保在该位置上存在的指令被执行之前执行着存在的指令的基础上,能够由另一线程读出该存储器区域中存在的数据。由此,处理器能够保持例如在多次执行写入指令之后执行读出指令的依存关系。
附图说明
图1是表示多线程处理器100的结构的图。
图2(a)是表示访问管理表格T100的数据构造的一例的图,图2(b)是Read(读取)访问管理表格T150的数据构造的一例的图。
图3是表示读出检测部116及指令检测部117的结构的图。
图4是表示在指令检测部117进行的动作的流程图。
图5是表示Read访问管理表格T150的更新的动作的流程图。
图6是表示执行Read指令时的动作的流程图。
图7是表示多线程处理器1100的结构的图。
图8是表示地址变换部1130的结构、及变换表格T200的数据构造的一例的图。
图9是表示多线程处理器2100的结构的图。
图10是表示地址变换部2130的结构、及变换表格T300的数据构造的一例的图。
图11是表示多核处理器系统3000的硬件结构的图。
图12是表示将多线程处理器100适用于影像的解码处理的情况的概要的图。
图13是表示宏块间的解码处理的依存关系的图。
具体实施方式
1.第1实施方式
以下,参照附图对本发明的第1实施方式进行说明。
1.1结构
图1是表示第1实施方式的多线程处理器100的结构的框图。
多线程处理器100是同时独立地执行N(N是2以上的整数)个指令流(N个线程)的处理器,具有:指令存储器101、指令取出控制部102、指令组决定部103、N个指令缓存器(第1指令缓存器104,第2指令缓存器105,...,第N指令缓存器106)、发行指令决定部107、优先度决定部108、N个寄存器文件(第1寄存器文件109,第2寄存器文件110,...,第N寄存器文件111)、运算器组112、回写总线113、更新控制部114、数据存储器115、读出检测部116、指令检测部117、管理表格存储部118。
这里,各指令缓存器与寄存器文件是1对1对应,构成N个逻辑处理器。
(1)指令存储器101
指令存储器101是保存在多线程处理器中执行的指令的存储器,保持有N条独立执行的指令流(线程)。
(2)指令取出控制部102
指令取出控制部102保存各线程的程序计数器(PC),从指令存储器读出接下来要执行的指令。这里,各线程的程序计数器设为在相互不同的值的范围内被计数。
并且,指令取出控制部102从读出检测部116接收表示指令可否继续取出的Read访问信号时,根据接收的信号的值,继续取出指令、以及进行对相当于例外发生的特殊处理向量(vector)的分支处理的起动。具体而言,在接收的信号的值是1的情况下,指令取出控制部102停止这之前的指令执行序列,起动对相当于例外发生的特殊处理向量的分支处理。在接收到信号的值是0的情况下,继续这之前的指令执行序列(scequence)。
(3)指令组决定部103
指令组决定部103从指令存储器101读出属于各指令流(steaming)的指令,进行解码,并写入分配给该指令的指令缓存器中。
(4)第1指令缓存器104~第N指令缓存器106
第i指令缓存器(i为1以上N以下的整数)受理并保存属于第i个指令流(以下,称为第i指令流)的指令。
(5)发行指令决定部107
发行指令决定部107决定从N个指令缓存器对每个设备循环发行的指令。
(6)优先度决定部108
优先度决定部108保存有在发行指令决定部107决定要发行的指令时使用的优先度信息表格。
这时,发行指令决定部107使用由优先度决定部108保持的优先度信息表格,决定按照每个设备循环发行的指令。
(7)第1寄存器文件109~第N寄存器文件111
第i寄存器文件(i是1以上N以下的整数)是通过执行第i指令缓存器中保存的指令流,保存成为读出及写入的对象的数据的寄存器组。
并且,如图1所示,运算器组112还具有存储器接口(memoryaccess)120。
这里,存储器接口120是用于执行对数据存储器进行访问的指令的运算器。
(9)回写总线113
回写总线113是用于将来自运算器组112的输出回写到第1寄存器文件109~第N寄存器文件111中的总线。
(10)数据存储器115
数据存储器115通过访问数据存储器的指令而被访问,保存有执行程序时的数据。
(11)管理表格存储部118
如图2(a),图2(b)所示,管理表格存储部118存储有访问管理表格T100及Read访问管理表格T150。
(11-1)访问管理表格T100
如图2(a)所示,访问管理表格T100具有用于存储多个如下组的区域,该组包括entry_valid200、dep_id201及valid化PC202(有效化PC202)。
entry_valid200表示该组(入口(entry))是否是有效的信息,例如,在对entry_valid200设定为值“0”时,该入口是无效的,在设定为值“1”时,该入口是有效的。
dep_id201是用于使该入口和Read访问管理表格T150内的入口之间相关联的信息。
Read访问管理表格T150具有存储多个如下组的区域,该组包括entry_valid210、dep_id211、Address(地址)212、valid213、th_id214、th_stride215。
entry_valid210表示该组(入口)是否是有效的信息,例如与entry_valid200同样地,在对entry_valid210设定为值“0”时,表示该入口是无效的,在设定为值“1”时,表示该入口是有效的。
dep_id211是用于使该入口和访问管理表格T100内的入口相关联的信息。这里,dep_id211与dep_id201的值相同的信息彼此是相对应的。
Address212表示以该入口管理的存储器区域的开始地址。
valid213表示对于以该入口管理的存储器区域已完成基于某一个线程的写入。
th_id214表示对以该入口管理的存储器区域完成了写入的线程的编号。
th_stride215表示对以该入口管理的存储器区域完成了写入的线程和进行读出的线程的距离的值。
(12)更新控制部114
更新控制部114更新访问管理表格T100及Read访问管理表格T150。
(12-1)关于访问管理表格T100
更新控制部114从软件受理软件更新指示后,对访问管理表格T100内的字段(field)进行更新。任一个字段都能够由软件读出、写入。
例如,更新控制部114在以N个线程动作的软件的处理开始前,当受理软件更新指示时,记录关于该软件应由访问管理表格T100管理的多个入口。
(12-2)关于Read访问管理表格T150
更新控制部114与访问管理表格T100的更新时同样,当从软件受理软件更新指示时,对Read访问管理表格T150内的字段进行更新。任一个字段都能够由软件读出、写入。
例如,更新控制部114在以N个线程动作的软件的处理开始前,当受理软件更新指示时,记录关于该软件应由Read访问管理表格T150管理的多个入口。
并且,更新控制部114当从指令检测部117受理指令检测信息时,对Read访问管理表格T150内的字段进行更新。这里,指令检测信息包括:表示检测初将访问管理表格T100的更新作为契机的指令的内容的信息(以下,称为指令检测信号)、作为更新对象的入口中包含的dep_id(以下,称为指令dep_id)的值、和指令th_id。这里,指令th_id是某一指令被执行时由运算器组112输出的该指令所属的程序的线程编号。
例如,更新控制部114从指令检测部117受理指令检测信息时,对于包括与受理的指令检测信息中含有的指令dep_id一致的dep_id的入口,将该入口中含有的valid的值变更为1,进而,将该入口的th_id的值变更为受理的指令检测信息中含有的指令th_id的值。
进而,当在某一线程中对valid的值为“1”的存储器区域执行读出指令时,更新控制部114将该valid的值从“1”变更为“0”。
(13)指令检测部117
指令检测部117是在执行指令时,基于该指令的程序计数器的值,检测是否是由管理表格存储部118保持的访问管理表格T100所管理的程序计数器的处理部。即,检测是否向某一存储器区域完成了写入。
如图3所示,指令检测部117具有表格读出控制部300,dep_id选择部301及PC比较部302。
表格读出控制部300当在某一指令被执行了时从运算器组112接收指令执行信号后,开始访问管理表格T100的入口的读出的动作。
PC比较部302判断读出的访问管理表格T100的入口中含有的valid化PC、和执行了某一指令时从运算器组112输出的PC是否一致,将其结果向dep_id选择部301输出。
dep_id选择部301取得由表格读出控制部300读出的entry_valid的值和dep_id的值。
并且,dep_id选择部301也取得基于PC比较部302的比较结果。
进一步地,在执行了某一指令时dep_id选择部301也从运算器组112接收指令执行信号、PC及指令th_id。
dep_id选择部301基于PC比较部302的比较结果,在所执行的指令的PC的值是应检测的指令的情况下,将包含对应地接收的指令th_id、取得的dep_id(以下,称为指令dep_id)及指令检测信号的指令检测信息向更新控制部114输出。
(14)读出检测部116
在执行访问数据存储器的指令时,读出检测部116根据其访问对象地址,检测是否是由管理表格存储部118保存的Read访问管理表格T150所管理的存储器区域。
如图3所示,读出检测部116具有表格读出控制部400、valid选择部401、Read地址比较部402、th_id比较部403及加算器404。
在存储器接口120中对数据存储器115进行读出访问的Read指令被执行时,表格读出控制部400从存储器接口120接收Read执行信号后,开始Read访问管理表格T150的入口的读出动作。
Read地址比较部402对读出的Read访问管理表格T150的address的值、和从存储器接口120输出的Read地址进行比较,将比较的结果向valid选择部401输出。这里,Read地址是在存储器接口120中对数据存储器115进行读出访问的指令被执行时,由存储器接口120输出的进行读出访问的对象的数据存储器地址。
加算器404计算读出的th_id的值和th_stride的值的和,将计算结果向th_id比较部403输出。
th_id比较部403对从存储器接口120输出的Readth_id的值、和从加算器404接收的值(读出的th_id的值和th_stride的值的和)进行比较,将比较的结果向valid选择部401输出。这里,Readth_id是在存储器接口120中对数据存储器115进行读出访问的指令被执行时,由存储器接口120输出的进行读出访问的指令所属的线程的线程编号。
valid选择部401从存储器接口120接收Read执行信号。
并且,valid选择部401取得由表格读出控制部300读出的entry_valid的值、dep_id的值及valid的值。
进而,valid选择部401分别取得Read地址比较部402的比较结果、及th_id比较部403的比较结果。
valid选择部401根据Read地址比较部402的比较结果、及th_id比较部403的比较结果,在Read地址是应检测的信息的情况下,将与其对应地取得的valid的值向存储器接口120输出。
1.2动作
这里,对多线程处理器100的动作进行说明。
(1)关于指令检测时的动作
首先,在某一指令被执行时,使用图4所示的流程图对由指令检测部117进行的动作进行说明。另外,该处理是通过指令检测部117从运算器组112接收到针对某一指令的指令执行信号、PC及指令th_id而开始的处理。
当某一指令被执行时,表格读出控制部300将用于从访问管理表格T100读出入口的控制中所用的计数器n初始化为0(步骤S5)。这里,计数器n被保存在表格读出控制部300中。
PC比较部302从访问管理表格T100取得第n个入口中包含的valid化PC的值(步骤S10),判断所取得的valid化PC的值和从运算器组112接收的PC的值是否相等(步骤S15)。
在PC比较部302判断为valid化PC的值和从运算器组112取得的PC的值相等的情况下(步骤S15中的“是”),dep_id选择部301取得第n个入口中包含的entry_valid的值(步骤S20)。这里,步骤S15中的判断结果为真,是指检测到连在访问管理表格T100中管理的PC所表示的指令都已被执行,即,检测到完成了向某一存储器区域的写入。
dep_id选择部301判断取得的entry_valid的值是否为“1”(步骤S25)。
在判断为是“1”的情况下(步骤S25中的“是”),dep_id选择部301从访问管理表格T100取得第n个入口中含有的dep_id的值(步骤S30)。
dep_id选择部301将取得的dep_id的值(指令dep_id)、与包含已被执行的指令的线程相对应的th_id(指令th_id)、和指令检测信号向更新控制部114输出(步骤S35)。
在判断为dep_id选择部301不是“1”的情况下(步骤S25中的“否”),表格读出控制部300将计数器n的值加1(步骤S40)。表格读出控制部300从入口终端寄存器取得登记在访问管理表格T100中的入口的终端编号(步骤S45)。然后,表格读出控制部300判断计数器n的值是否与入口的终端编号一致(步骤S50)。在判断为相等的情况下结束处理(步骤S50中的“是”),在判断为不相等的情况下处理返回到步骤S10(步骤S50中的“否”)。
(2)关于Read访问管理表格T150的更新的动作
这里,当连在访问管理表格T100中管理的PC所表示的指令都被执行时,使用图5所示的流程图对进行的Read访问管理表格T150的更新的动作进行说明。
当从指令检测部117接收指令dep_id、指令th_id及指令检测信号时,更新控制部114将用于从Read访问管理表格T150读出入口的控制中所用的计数器m初始化为0(步骤S100)。这里,计数器m保存在更新控制部114中。
更新控制部114从Read访问管理表格T150取得第m个入口中含有的dep_id的值(步骤S105),并判断取得的dep_id的值和从指令检测部117接收的指令dep_id的值是否相等(步骤S110)。
在判断为dep_id的值和指令dep_id的值相等时(步骤S110中的“是”),更新控制部114将从Read访问管理表格T150取得的第m个入口中含有的valid的值变更为“1”,并且将th_id的值变更为从指令检测部117取得的指令th_id的值(步骤S115)。
在判断为dep_id的值和指令dep_id的值相等的情况下(步骤S110中的“否”),更新控制部114将计数器m的值加1(步骤S120)。更新控制部114从入口终端寄存器取得登记在Read访问管理表格T150中的入口的终端编号(步骤S125)。然后,更新控制部114判断计数器m的值与入口的终端编号是否一致(步骤S130)。在判断为相等的情况下结束处理(步骤S130中的“是”),在判断为不相等的情况下处理返回到步骤S105(步骤S130中的“否”)。
(3)关于Read指令检测时的动作
这里,使用图6所示的流程图对执行Read指令时的动作进行说明。另外,该处理是通过读出检测部116从存储器接口120接收到针对Read指令的Read执行信号、Read地址及Readth_id而开始的处理。
首先,表格读出控制部400将用于从Read访问管理表格T150读出入口的控制中所用的计数器p初始化为0(步骤S200)。这里,计数器p保存在表格读出控制部400中。
Read地址比较部402取得Read访问管理表格T150的第p个入口中含有的Address的值(步骤S205),判断取得的Address的值与从存储器接口120接收到的Read地址的值是否一致(步骤S210)。
在Read地址比较部402判断为一致的情况下(步骤S210中的“是”),val.id选择部401取得Read访问管理表格T150的第p个入口中含有的entry_valid的值(步骤S215)。valid选择部401判断取得的entry_valid的值是否为1(步骤S220)。
在valid选择部401判断为entry_valid的值是1的情况下(步骤S220中的“是”),加法器404取得Read访问管理表格T150的第p个入口中含有的th_id的值和th_stride的值,并计算它们的和(步骤S225)。
th_id比较部403判断计算出的和(th_id的值与th_stride的值的和)是否与从存储器接口120接收的Readth_id的值一致(步骤S230)。
在判断为一致的情况下(步骤S230中的“是”),valid选择部401取得Read访问管理表格T150的第p个入口中含有的valid的值(步骤S235)。这里,比较结果为真(一致)表示是由th_stride的值表示的所期望的先行线程完成了写入的存储器区域。
valid选择部401判断取得的valid的值是否为1(步骤S240)。
在判断为valid的值是1的情况下(步骤S240中的“是”),valid选择部401将值为0的Read访问信号输出给指令取出控制部102(步骤S245)。
在Read地址比较部402判断为不一致的情况下(步骤S210中的“否”),及valid选择部401判断为entry_valid的值不是1的情况下(步骤S220中的“否”),表格读出控制部400将计数器p的值加1(步骤S250)。表格读出控制部400从入口终端寄存器取得登记到Read访问管理表格T150中的入口的终端编号(步骤S255)。然后,表格读出控制部400判断计数器p的值是否与入口的终端编号一致(步骤S260)。在判断为相等的情况下,结束处理(步骤S260中的“是”),在判断为不相等的情况下,处理返回到步骤S205(步骤S260中的“否”)。
在判断为valid的值不是1的情况下(步骤S240中的“否”),valid选择部401将值为1的Read访问信号向指令取出控制部102输出(步骤S265)。
这里,指令取出控制部102接收Read访问信号时,在接收的信号的值为1的情况下,停止这之前的指令执行序列,启动向相当于例外发生的特殊处理矢量的分支处理。这是因为,由于连以访问管理表格T100管理的PC的指令都没有执行,即,所期望的基于先行线程的向存储器区域的写入没有结束,需要发生例外而进入等待写入完成的序列。
1.3总结
根据上述说明,本实施方式表示的多线程处理器100能够保持例如在执行多次写入指令之后执行读出指定这样的依存关系。
并且,通过以硬件级别来管理指令执行,相比以往的基于信标的处理,不需要同步用的代码,减少通信的总消耗。因此,能够实现一种处理器,其用于管理线程间的依存关系的软件处理即使在线程数变多的情况和依存关系变复杂的情况下,也不引起较大的性能劣化的处理器。
并且,关于上述访问管理表格T100及Read访问管理表格T150的生成的定时,是在通过并行化工具分割应执行的程序,以能够并行处理的方式分配给各线程之后。这是由于,通过对各线程进行分配,各线程间的依存关系就变得明确。
2.第2实施方式
以下,参照附图对本发明的第2实施方式图面以与第1实施方式的不同点为中心进行说明。
2.1结构
图7是表示第2实施方式的多线程处理器1100的结构的框图。
多线程处理器1100是同时独立地执行N(N为2以上的整数)个指令流(N个线程)的处理器,具有:指令存储器1101、指令取出控制部1102、指令组决定部1103、N个指令缓存器(第1指令缓存器1104,第2指令缓存器1105,...,第N指令缓存器1106)、发行指令决定部1107、优先度决定部1108、N个寄存器文件(第1寄存器文件1109,第2寄存器文件1110,...,第N寄存器文件1111)、运算器组1112、回写总线1113、更新控制部1114、数据存储器1115、读出检测部1116、指令检测部1117、管理表格存储部1118、地址变换部1130。
这里,各指令缓存器和寄存器文件是1对1地对应,与第1实施方式同样地,构成N个逻辑处理器。
(1)地址变换部1130
地址变换部1130使用变换表格T200将从指令取出控制部1102输入的取出地址(逻辑地址)变换为另外的地址(物理地址),并向指令存储器1101输出的单元。该动作是在为了处理虚拟空间而具有MMU(存储器管理单元)的处理器上,用于管理虚拟空间的页面的TLB(页表缓存器)的动作(例如,参照以下的非专利文献2)。
非专利文献2:『ModernProcessorDesign』,McGraw-HillSeriesinElectricalandComputerEngineering,p.142-145(ISBN0-07-057064)
以下,对本实施方式的地址变换部1130的具体功能进行说明。
如图8所示,地址变换部1130具有变换表格T200。
变换表格T200具有用于存储多个如下组(入口)的区域,该组包括PC检查标志(checkflag)、标志类、逻辑地址及物理地址。这里,在各入口管理有被称为4KB单位的页面的存储器区域。
PC检查标志是表示该入口中包含的页内,包含有通知给指令检测部1117并应检查的PC的可能性的标志。具体而言,PC检查标志的值为1的情况下,表示存在包含有应检查的PC的可能性,值为0的情况下,表示不存在包含有应检查的PC的可能性。
标志类是一般的TLB具有的标志类,在本申请中省略详细的说明。
逻辑地址是一般的TLB具有的逻辑地址字段,在本申请中省略详细的说明。
物理地址是一般的TLB具有的物理地址字段,在本申请中省略详细的说明。
地址变换部1130从指令取出控制部1102接收逻辑地址时,使用变换表格T200将该逻辑地址变换为物理地址。
在与接收到的逻辑地址对应的PC检查标志的值为1的情况下,地址变换部1130将物理地址和值为1的PC检查请求向指令存储器1101输出。PC检查标志的值为0的情况下,地址变换部1130将物理地址和值为0的PC检查请求向指令存储器1101输出。这里,PC检查请求是表示是否应该对通知给指令检测部1117而被执行的指令的PC进行检查的请求,在PC检查请求的值为1的情况下,表示应检查,在值为0的情况下,表示不需要检查。
(2)指令存储器1101
与第1实施方式同样地,指令存储器1101是保存在多线程处理器中执行的指令的存储器,保存有N条独立执行的指令流(线程)。
指令存储器1101从指令取出控制部1102接收值为1的PC检查请求时,当取出由物理地址指定的指令时,对取出的指令附加表示是检查对象的指令的标志信息,并输出给指令取出控制部1102。
在以后的指令解码、流程、执行的动作中,直接以附加了该标志状态的状态而被执行。
(3)指令取出控制部1102
指令取出控制部1102保存各线程的程序计数器,从指令存储器读出接下来执行的指令。
具体来说,指令取出控制部1102将接下来执行的指令的逻辑地址向地址变换部1130输出,之后,从指令存储器1101接收指令。在接收指令时,在是应检查PC的指令的情况下,附加有标志状态。
(4)指令组决定部1103
指令组决定部1103与第1实施方式中示出的指令组决定部103同样,因此这里省略说明。
(5)第1指令缓存器1104~第N指令缓存器1106
第1指令缓存器1104~第N指令缓存器1106与第1实施方式中示出的各指令缓存器同样,因此这里省略说明。另外,以下将第i个指令流称为第i指令流(i为1以上N以下的整数)。
(6)发行指令决定部1107
发行指令决定部1107与第1实施方式中示出的发行指令决定部107同样,因此这里省略说明。
(7)优先度决定部1108
优先度决定部1108与第1实施方式中示出的优先度决定部108同样,因此这里省略说明。
(8)第1寄存器文件1109~第N寄存器文件1111
第1寄存器文件1109~第N寄存器文件1111与第1实施方式中示出的各寄存器文件同样,因此这里省略说明。
运算器组1112与第1实施方式同样,是含有加法器和乘法器等多个运算器的处理部,也具有存储器接1120。这里,存储器接120是用于执行访问数据存储器的指令的运算器。
在执行的指令中附加有标志状态的情况下,运算器组1112通知应检查PC的意思的信息。
(10)回写总线1113
回写总线1113是与第1实施方式中所示的回写总线113同样,因此这里省略说明。
(11)数据存储器1115
数据存储器1115是与第1实施方式中所示的数据存储器115同样,因此这里省略说明。
(12)管理表格存储部1118
管理表格存储部1118与第1实施方式同样,存储有访问管理表格及Read访问管理表格。另外,在以后的说明中如果需要,使用图2(a)、图2(b)所示的访问管理表格T100及Read访问管理表格T150进行说明。
(13)更新控制部1114
更新控制部1114与第1实施方式的更新控制部114同样,是更新访问管理表格T100及Read访问管理表格T150的单元。另外,关于更新的详细功能,与第1实施方式同样,因此这里省略说明。
(14)指令检测部1117
指令检测部1117具有与第1实施方式中示出的指令检测部117同样的结构要素,在执行指令时,进行如下处理:基于该指令的程序计数器的值,检测是否是由管理表格存储部1118保存的访问管理表格T100中管理的程序计数器的处理。
与第1实施方式的不同点是,上述处理是在由运算器组1112通知了应检查PC的内容的信息时开始的。
以下,如果需要,使用第1实施方式表示的结构要素进行说明。
(15)读出检测部1116
读出检测部1116具有与由第1实施方式表示的读出检测部116同样的结构要素,在执行访问数据存储器的指令时,基于其访问对象地址,检测是否是由管理表格存储部1118所保存的Read访问管理表格T150中管理的存储器区域。
另外,由于具体功能与第1实施方式相同,所以这里省略说明。
2.2动作
这里,对于多线程处理器1100的动作,以与第1实施方式示出的多线程处理器100的动作的不同点为中心进行说明。
(1)关于指令检测时的动作
指令检测时的动作是与第1实施方式示出的动作(参照图4)同样的动作的流程,但开始的定时不同。本实施方式中,指令检测部1117在运算器组1112通知了应检查PC的意思的信息时,开始该处理。
(2)关于Read访问管理表格T150的更新的动作
本实施方式的Read访问管理表格T150的更新的动作与第1实施方式示出的动作(参照图5)同样,因此这里省略说明。
(3)关于Read指令检测时的动作
本实施方式的Read指令检测时的动作与第1实施方式中示出的动作(参照图6)同样,因此这里省略说明。
2.3总结
以上,通过使用地址变换部1130,能够大幅度削减由运算器组1112执行并由指令检测部1117检查的指令数,削减指令检测部1117的动作频度,削减电路的消耗功率。
并且,与第1实施方式同样,由本实施方式示出的多线程处理器100能够保持例如在多次执行写入指令之后执行读出指令这样的依存关系。
与第1实施方式同样,在第2实施方式中,以硬件级别进行指令执行的管理,相比以往的基于信标的处理,不需要同步用的代码,减少通信的总消耗。因此,能够实现一种处理器,其用于管理线程间的依存关系的软件处理在线程数变多的情况和依存关系变复杂的情况下,也不引起大规模性能劣化。
并且,与第1实施方式相同,关于访问管理表格T100及Read访问管理表格T150的生成的定时,是在通过并行化工具分割应执行的程序,并分配给能够并行处理的各线程之后。进而,关于变换表格T200,也是在通过并行化工具分割应执行的程序,并分配给能够并行处理的各线程之后生成的。这是由于通过分配给各线程,在各线程间使用的页面(page)等也明确。
3.第3实施方式
以下,参照附图对本发明的第3实施方式,以与第1及第2实施方式的不同之处为中心进行说明。
3.1结构
图9是表示第3实施方式的多线程处理器2100的结构的框图。
多线程处理器2100是同时独立地执行N(N为2以上的整数)个指令流(N个线程)的处理器,具有:指令存储器2101、指令取出控制部2102、指令组决定部2103、N个指令缓存器(第1指令缓存器2104,第2指令缓存器2105,...,第N指令缓存器2106)、发行指令决定部2107、优先度决定部2108、N个寄存器文件(第1寄存器文件2109,第2寄存器文件2110,...,第N寄存器文件2111)、运算器组2112、回写总线2113、更新控制部2114、数据存储器2115、读出检测部2116、指令检测部2117、管理表格存储部2118、和地址变换部2130。
这里,各指令缓存器与寄存器文件是1对1对应,与第1及第2实施方式同样地,构成N个逻辑处理器。
(1)指令存储器2101
指令存储器2101与第1实施方式同样,是保存在多线程处理器中执行的指令的存储器,保持有N条独立执行的指令流(线程)。
(2)指令取出控制部2102
指令取出控制部2102与第1实施方式中示出的指令取出控制部102同样,因此这里省略说明。
(3)指令组决定部2103
指令组决定部2103与第1实施方式中示出的指令组决定部103同样,因此这里省略说明。
(4)第1指令缓存器2104~第N指令缓存器2106
第1指令缓存器2104~第N指令缓存器2106与第1实施方式中示出的各指令缓存器同样,因此这里省略说明。另外,以下将第i个指令流称为第i指令流(i为1以上N以下的整数)。
(5)发行指令决定部2107
发行指令决定部2107与第1实施方式中示出的发行指令决定部107同样,因此这里省略说明。
(6)优先度决定部2108
优先度决定部2108与第1实施方式中示出的优先度决定部108同样,因此这里省略说明。
(7)第1寄存器文件2109~第N寄存器文件2111
第1寄存器文件2109~第N寄存器文件2111与第1实施方式中示出的各寄存器文件同样,因此这里省略说明。
(8)地址变换部2130
地址变换部2130是将从存储器接口2120输入的访问地址(逻辑地址)使用变换表格T300变换为其他地址(物理地址)并向数据存储器2115输出的单元。该动作是为了处理虚拟空间而在具有MMU(存储器管理单元)的处理器上,管理虚拟空间的页面的TLB(页表缓存器)的动作(参照非专利文献1)。
以下,对本实施方式的地址变换部2130的具体功能进行说明。
如图10所示,地址变换部2130具有变换表格T300。
变换表格T300具有用于存储多个如下组(入口)的区域,该组包括:Read检查标志、标志类、逻辑地址及物理地址。这里,在各入口中,管理有被称为4KB单位的页面的存储器区域。
Read检查标志是在该入口中包含的页面内表示如下内容的标志,该标志表示含有通知给读出检测部2116并应该检查的Read地址的可能性。具体来说,Read检查标志的值为1时表示具有包含应检查的Read地址的可能性,在值为0时表示没有包含应检查的Read地址的可能性。
标志类是具有一般的TLB的标志类,在本专利中省略详细说明。
逻辑地址是一般的TLB具有的逻辑地址字段,在本申请中省略详细说明。
逻辑地址是一般的TLB具有的物理地址字段,在本申请中省略详细说明。
地址变换部2130从存储器接口2120接收逻辑地址时,使用变换表格T300将该逻辑地址变换为物理地址。
地址变换部2130在接收的逻辑地址所对应的Read检查标志的值为1时,将值为1的Read检查请求输出给存储器接口2120。Read检查标志的值为0时,地址变换部2130将值为0的Read检查请求输出给存储器接口2120。这里,所谓Read检查请求是表示是否应该检查通知给读出检测部2116并被执行的Read指令的Read访问,Read检查请求的值为1时表示应该检查,值为0时表示不需检查。
运算器组2112与第1实施方式同样,是含有加法器和乘法器等多个运算器的处理部,还具有存储器接口2120。这里,存储器接口220是用于执行访问数据存储器的指令的运算器。
存储器接口2120从地址变换部2130接收到与执行的指令相对的Read检查请求时,通知应检查Read地址的内容的信息。
(10)回写总线2113
回写总线2113与第1实施方式中示出的回写总线113同样,因此这里省略说明。
(11)数据存储器2115
数据存储器2115与第1实施方式中示出的数据存储器115同样,因此这里省略说明。
(12)管理表格存储部2118
管理表格存储部2118与第1实施方式同样,存储有访问管理表格及Read访问管理表格。另外,如果在后面的说明中有必要,使用图2(a),图2(b)中示出的访问管理表格T100及Read访问管理表格T150进行说明。
(13)更新控制部2114
更新控制部2114与第1实施方式的更新控制部114同样,更新访问管理表格T100及Read访问管理表格T150。另外,关于更新的详细功能与第1实施方式同样,因此这里省略说明。
(14)指令检测部2117
指令检测部2117具有与第1实施方式中示出的指令检测部117同样的结构要素,在执行指令时,基于该指令的程序计数器的值,进行如下的检测处理,检测是否是由管理表格存储部2118所保持的访问管理表格T100中管理的程序计数器。
另外,关于详细的功能,与第1实施方式同样,因此这里省略详细说明。
(15)读出检测部2116
读出检测部2116具有与第1实施方式中示出的读出检测部116同样的结构要素,在执行访问数据存储器的指令时,基于其访问对象地址,检测是否是由管理表格存储部1118所保持的Read访问管理表格T150中管理的存储器区域。
与第1及第2实施方式的不同之处是,上述处理是在存储器接口2120通知了应检查Read地址的意思的信息时开始的。
以下,如果有必要,使用第1实施方式中示出的结构要素进行说明。
3.2动作
这里,关于多线程处理器2100的动作,以与第1实施方式中示出的多线程处理器100、及第2实施方式中示出的多线程处理器1100的动作不同的点为中心进行说明。
(1)关于指令检测时的动作
指令检测时的动作与第1实施方式中示出的动作(参照图4)同样,因此这里省略说明。
(2)关于Read访问管理表格T150的更新的动作
本实施方式的Read访问管理表格T150的更新的动作,与第1实施方式中示出的动作(参照图5)同样,因此这里省略说明。
(3)关于Read指令检测时的动作
本实施方式的Read指令检测时的动作是与第1实施方式中示出的动作(参照图6)同样的动作的流程,但开始的定时不同。本实施方式中,读出检测部2116在存储器接口2120通知了应检查Read地址的意思的信息时,该开始处理。
另外,详细动作的流程与图4中示出的流程图相同,因此这里省略说明。
3.3总结
以上,通过使用地址变换部1130,能够大幅度削减由运算器组2112执行并由读出检测部2116检查的Read指令数,削减读出检测部2116的动作频度,削减电路的消耗功率。
并且,与第1实施方式同样,本实施方式中示出的多线程处理器100能够保持例如在执行多次写入指令后执行读出指令这样的依存关系。
与第1实施方式同样,在第3实施方式中,以硬件级别进行指令执行的管理,相比以往的基于信标的处理,不需要同步用的代码,减少通信的总消耗。因此,能够实现一种处理器,其用于管理线程间的依存关系的软件处理在线程数变多和依存关系变复杂的情况下,也不引起大规模性能劣化。
另外,本实施方式中示出的多线程处理器2100是在第1实施方式中示出的多线程处理器100的结构要素中加入地址变换部2130的结构,但本实施方式中示出的多线程处理器2100也可以是在第2实施方式中示出的多线程处理器1100的结构要素中加入地址变换部2130的结构。
并且,与第1实施方式同样地,关于访问管理表格T100及Read访问管理表格T150的生成的定时,是在通过并行化工具分割应执行的程序,并分配给能够并行处理的各线程之后。进而,关于变换表格T300,也通过并行化工具对应执行的程序进行分割,并分配给能够并行处理的各线程之后生成的。这是由于通过分配给各线程,能够明确各线程间使用的页面等。
4.第4实施方式
以下,参照附图对本发明的第4实施方式以与第1实施方式的不同之处为中心进行说明。
图11是表示第4实施方式的多核处理器系统3000的硬件结构的框图。
如图3所示,多核处理器系统3000具有:多线程处理器100a和100b。
多线程处理器100a和100b都具有与第1实施方式中示出的多线程处理器100同样的结构。
与多线程处理器100的不同之处是,多线程处理器100a具有的更新控制部114a、和多线程处理器100b具有的更新控制部114b的功能与第1实施方式的更新控制部114的功能不同。
以下,以该点为中心进行说明。
多线程处理器100a具有的管理表格存储部118a、和多线程处理器100b具有的管理表格存储部118b与第1实施方式中示出的管理表格存储部118b相同,因此这里省略说明。
更新控制部114a更新由该多线程处理器100a保存的各表格,并且还进行由多线程处理器100b保存的各表格的更新。
并且,更新控制部114b也同样,更新由该多线程处理器100b保存的各表格,并且还进行由多线程处理器100a保存的各表格的更新。
另外,更新的定时与第1实施方式同样,因此这里省略详细的说明。
通过上述方式,能够抑制处理器间的密切结合,减小半导体的安装难易度。
另外,本实施方式中示出的多线程处理器3100是改变了第1实施方式中示出的多线程处理器100的更新控制部114后的结构,但并不限定于此。本实施方式中示出的多线程处理器3100也可以改变第2实施方式中示出的多线程处理器1100的更新控制部1114而构成,也可以改变第3实施方式中示出的多线程处理器2100的更新控制部2114而构成。
5.第5实施方式
这里,关于本发明的第5实施方式,对将第1实施方式中示出的多线程处理器100适用于面向数字AV设备的系统LSI影像的解码及编码处理时的动作进行说明。
首先,对适用于解码处理的情况进行说明。
如图12所示,多线程处理器100是对4个宏块(MBn,MBn+1,Bn+2,Bn+3)进行解码的单元,将宏块单位(MBn,MBn+1,Bn+2,Bn+3)的处理通过线程0~线程3进行各宏块的解码处理。这里,宏块MBn,MBn+1,Bn+2,Bn+3连续地配置。
例如,为了将使用H.264等规格而压缩的影像信号解码,需要进行比特流的解析、经可变长编码的信号的可变长解码处理(VLD)、逆量化(IQT)及逆频率变换、运动补偿(MC)、图像的重构(Recon)、去方块效应滤波处理(DBF)。
并且,例如,在宏块MBn的可变长解码处理中,将应在下一个宏块MBn+1中参照的数据(交接数据)写入某个存储器区域。如图13所示,在时间t1完成了该写入时,多线程处理器100将Read访问管理表格T150中的与该存储器区域对应的Address相应的valid的值更新为1。这样,下一个宏块MBn+1能够开始对写入了该存储器区域的交接数据的读出。
并且,在时间t2,t3,t4,t5也同样,当在宏块MBn中分别完成了解码的处理(IQT,MC,Recon,DBF)时,即,完成了交接数据的写入时,多线程处理器100将Read访问管理表格T150中对应的Address所对应valid的值更新为1。由此,宏块MBn+1中,在执行解码的处理(IQT,MC,Recon,DBF)时,能够开始通过宏块MBn而被写入的交接数据的读出。
另外,宏块MBn+1与宏块MBn+2之间,及宏块MBn+2与宏块MBn+3之间的各自的解码处理的依存关系也与上述相同,因此这里省略说明。
接着,对适用于编码处理的情况进行说明。
在宏块的编码处理中,通常包含:计算对于符号化对象的图像数据的预测误差的减法处理、对于预测误差进行频率变换及量化的量化处理、对量化DCT系数及运动矢量进行可变长编码的编码处理、生成参照图像的处理、与运动补偿相关的处理。
多线程处理器的动作的概念与适用于上述解码处理的情况相同,在完成了对某个宏块(例如,MBn)的减法处理,即在完成了交给下一个宏块MBn+1的数据的写入时,宏块MBn+1开始对写入的交接数据的读出。
并且,其他处理的依存关系也是同样的。
这样,在按照每个线程执行宏块单位的编码处理及编码处理的情况下,通过由程序计数器管理各线程间的依存关系,即使在线程数变多的情况和依存关系变复杂的情况下,也能够实现用于管理线程间的依存关系的软件处理不引起大规模性能劣化的面向数字AV设备的系统LSI。
6.变形例
以上,基于各实施方式进行了说明,但本发明不限定于上述各实施方式。例如,考虑有如下的变形例。
(1)在上述第1实施方式中,在Read地址的值和Read访问管理表格T150的Address的值的比较中,是使用了全部地址比特进行的比较,但并不限定于此。
例如,通过从比较对象中除去下位7比特,可以以128比特精度进行比较。通过这样,能够削减Read访问管理表格T150的存储容量。
(2)在上述各实施方式中,将访问管理表格及Read访问管理表格向管理表格存储部存储的定时,也可以是基于用户操作而产生的。
此外,预先将访问管理表格及Read访问管理表格保存到与管理表格存储部不同的存储区域中,通过执行用于指定该保存的地址的专用指令,将各表格从上述不同的存储区域复制到管理表格存储部。
(3)上述各实施方式中,向某一存储器区域完成写入的检测,即线程中含有的特定的位置上存在的指令的检测是由程序计数器(PC)控制的,但不限定于此。
例如,在作为检测对象的线程中包含的特定的位置上,可以放置专用指令。并且,也可以通过在执行前在该位置上放置发生OP例外这样的代码而进行对应的中断处理例程来进行处理。
(4)上述各实施方式中,对读出指令除了进行处理器元件的解码处理之外,也可以通过对在执行前发生OP例外这样的读出指令进行代码改写等方法错误设陷,而以对应的例程来进行特别处理。
(5)上述各实施方式中,访问管理表格的入口和Read访问管理表格的入口处于1对1的关系,但不限定于此。
也可以是1对多的关系。该情况下,读出检测部在图6中示出的步骤S230的判断中判断为“否”的情况下,通过将处理的移行目的地变更为步骤S250来实现。
(6)上述各实施方式中,作为管理对象的存储器区域的区域长度也可以是固定长度,也可以是按照作为管理对象的存储器区域而不同的可变长度。
(7)上述各实施方式中,在读出数据时参照了地址,但不限定于此。
也可以通过PC(程序计数器)指定来进行读出。例如,在写入(Write)和读出(Read)的依存关系中,在Write时不能确定PC的情况下,通过在Read侧确定PC(保证已经结束了写入的指令),能够保持Write和Read的依存关系。
(8)上述各实施方式中,确定PC来保证写入已结束,但不限定于此。
参照确定的控制寄存器的内容和存储器的内容,判断写入是否结束。
(9)上述第5实施方式中,进行了连续配置的宏块单位的并行处理,即线程的分配,但不限定于此。
并行处理也可以是以宏块线单位来进行,也可以是以图像处理中的IDCT等的处理单位来进行。并且,也可以是GOP(GroupOfPicture,图片组)单位。
(10)通过将记述上述实施方式中说明的方法的步骤的程序预先存储到存储器中,CPU(CentralProcessingUnit)等从存储器读出程序,并执行读出的程序,由此实现上述方法。
并且,将记述了该方法的步骤的程序存储到记录介质中,并进行发布。
(11)也可以组合上述实施方式及变形例。
7.补充
(1)本发明的一个实施方式的的处理器执行多个线程,其特征在于,该处理器具有:设定单元,在执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令时,对表示是否向该存储器区域完成了写入的利用信息,设定表示该一个线程向该存储器区域完成了写入之意的内容,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用;以及控制单元,在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行另一线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域未完成写入的情况下,抑制执行该读出指令。
根据该结构,处理器通过执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令,进行另一线程对该存储器区域中存在的数据的读出,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用。即,处理器在确保在该位置上存在的指令被执行之前执行着存在的指令的基础上,能够进行另一线程的该存储器区域上存在的数据的读出。由此,处理器能够确保例如在执行多次写入指令之后执行读出指令这样的依存关系。
(2)这里,上述设定单元具有预先保存与存在于上述位置上的指令相对应的程序计数器的值的保存区域,上述设定单元从外部取得上述程序计数器的值后,将该值存放到上述保存区域中,在与由上述一个线程执行的指令相对应的程序计数器的值和所保存的值一致的情况下,上述设定单元对上述利用信息设定表示上述一个线程向该存储器区域完成了写入之意的内容。
根据该结构,处理器通过使用程序计数器,能够容易确定在一个线程的确保向上述存储器区域完成了写入的位置上存在的指令。
(3)这里,在上述保存区域中还将上述利用信息和表示上述存储器区域的存储器地址相对应地保存,上述控制单元从上述另一线程取得上述读出指令的读出对象即存储器区域的读出对象地址,在上述读出对象地址与上述存储器地址一致的情况下,根据对应的利用信息所示的内容执行及抑制上述读出指令。
根据该结构,处理器将利用信息与存储器地址相对应地加以保存,能够容易确定表示读出对象的存储器地址所示出的存储器区域的利用状况。
(4)这里,上述处理器还具有地址变换单元,该地址变换单元将进行数据的读出时取得的虚拟地址变换为物理地址,在变换后的上述物理地址与由上述许可单元预先保存的上述存储器地址之间具有关联的情况下,通知应确认上述存储器区域的利用状况,上述控制单元接收上述通知后,基于上述利用信息判断与上述存储器地址对应的上述存储器区域的利用状况。
根据该结构,处理器通过具有地址变换手段,能够事先确定控制单元是否有必要判断上述规定的存储器区域的利用状况。
(5)这里,上述存储器区域是也被与上述另一线程不同的线程利用的区域,上述控制单元还在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行由上述不同的线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域未完成写入的情况下,抑制执行该读出指令。
根据该结构,处理器即使在执行多个指令之后执行对由多个线程共同利用的存储器区域的读出指令的情况下,也能够保持着依存关系地进行执行。
(6)这里,上述处理器还具有地址变换单元,该地址变换单元将取出指令时取得的虚拟地址变换为物理地址,在变换后的上述物理地址与由上述许可单元预先保存的上述程序计数器之间具有关联的情况下,将请求上述许可单元执行上述判断的请求信息通知给上述许可单元,上述许可单元从上述地址变换手段取得上述请求信息后,进行上述判断。
根据该结构,处理器通过具有地址变换手段,能够事先确定是否有必要由许可单元进行判断。
(7)这里,上述设定单元还在对利用信息设定表示向上述存储器区域完成了写入之意的内容时,也对由另一处理器管理的另外的利用信息设定表示向上述存储器区域完成了写入之意的内容。
根据该结构,处理器与另一处理器之间,也能够保持着在多个写入指令的执行后执行读出指令这样的依存关系地进行处理。
(8)这里,上述一个线程及另一线程用于进行图像的解码处理,进行图像的解码处理的图像处理系统具有上述处理器。
根据该结构,处理器能够保持着在多个写入指令的执行后执行读出指令这样的依存关系地进行解码处理。
(9)这里,上述一个线程及另一线程用于进行图像的编码处理,进行图像的编码处理的图像处理系统具有上述处理器。
根据该结构,处理器能够保持着在多个写入指令的执行后执行读出指令这样的依存关系地进行编码处理。
(10)并且,本发明的一个实施方式的图像处理装置,使用多个线程处理图像,其特征在于,该图像处理装置具有:设定单元,在执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令时,对表示是否向该存储器区域完成了写入的利用信息,设定表示该一个线程向该存储器区域完成了写入之意的内容,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用;以及控制单元,在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行另一线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域未完成写入的情况下,抑制执行该读出指令。
根据该结构,图像处理装置通过执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令,进行另一线程对该存储器区域中存在的数据的读出,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用。即,图像处理装置在确保在该位置上存在的指令被执行之前执行着存在的指令的基础上,能够进行另一线程的该存储器区域上存在的数据的读出。由此,图像处理装置能够确保例如在执行多次写入指令之后执行读出指令这样的依存关系。
(11)这里,上述图像处理装置对编码后的图像进行解码,将编码后的一个图像中连续配置的宏块以相互不同的方式分配给上述多个线程,在确保完成了上述写入的位置上存在的指令是表示完成了如下处理的指令,该处理为可变长解码处理、逆量化/逆频率变换的处理、与运动补偿相关的处理、图像的重构处理及去方块效应滤波处理中的某一个处理,在对一个宏块判断为完成了上述写入的情况下,控制单元对处理进行控制,以便对位于该一个宏块的后面的下一个宏块执行与判断为完成了写入的处理相同的处理。
根据该结构,图像处理装置对于连续配置的宏块,能够在保持宏块间的依存关系的状态下进行解码处理。
(12)这里,上述图像处理装置对图像进行编码,在一个图像中连续配置的宏块以相互不同的方式分配给上述多个线程,在确保完成了上述写入的位置上存在的指令是如下处理,该处理为对编码对象的图像数据计算预测误差的减法处理、对预测误差进行量化和频率变换的量化处理、编码处理、参照图像的生成处理及与运动补偿相关的处理中的某一个处理,在对一个宏块判断为完成了上述写入的情况下,控制单元对处理进行控制,以便对位于该一个宏块的后面的下一个宏块执行与判断为完成了写入的处理相同的处理。
根据该结构,图像处理装置对于连续配置的宏块,能够在保持宏块间的依存关系的状态下进行编码处理。
工业实用性
本发明的多线程处理器由于具有实现灵活且高性能的运算处理的功能,能够适用于DVD录制和数字TV等的影像及声音的媒体处理的多线程处理器等。
符号说明
100多线程处理器
101指令存储器
102指令取出控制部
103指令组决定部
104第1指令缓存器
105第2指令缓存器
106第N指令缓存器
107发行指令决定部
108优先度决定部
109第1寄存器文件
110第2寄存器文件
111第N寄存器文件
112运算器组
113回写总线
114更新控制部
115数据存储器
116读出检测部
117指令检测部
118管理表格存储部
120存储器接口
300表格读出控制部
301dep_id选择部
302PC比较部
400表格读出控制部
401dep_id选择部
402Read地址比较部
403比较部
404加算器

Claims (11)

1.一种处理器,执行多个线程,其特征在于,该处理器具有:
设定单元,在执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令时,对表示是否向该存储器区域完成了写入的利用信息,设定表示该一个线程向该存储器区域完成了写入之意的内容,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用;以及
控制单元,在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行另一线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域未完成写入的情况下,抑制执行该读出指令,
上述设定单元具有预先保存与存在于上述位置上的指令相对应的程序计数器的值的保存区域,
上述设定单元从外部取得上述程序计数器的值后,将该值存放到上述保存区域中,
在与由上述一个线程执行的指令相对应的程序计数器的值和所保存的值一致的情况下,上述设定单元对上述利用信息设定表示上述一个线程向该存储器区域完成了写入之意的内容,
在上述保存区域中还将上述利用信息和表示上述存储器区域的存储器地址相对应地保存,
上述控制单元从上述另一线程取得上述读出指令的读出对象即存储器区域的读出对象地址,在上述读出对象地址与上述存储器地址一致的情况下,根据对应的利用信息所示的内容执行及抑制上述读出指令。
2.如权利要求1所述的处理器,其特征在于,上述处理器还具有地址变换单元,
该地址变换单元将进行数据的读出时取得的虚拟地址变换为物理地址,在变换后的上述物理地址与由上述保存区域预先保存的上述存储器地址之间具有关联的情况下,通知应确认上述存储器区域的利用状况,
上述控制单元接收上述通知后,基于上述利用信息判断与上述存储器地址对应的上述存储器区域的利用状况。
3.如权利要求1所述的处理器,其特征在于,上述存储器区域是也被与上述另一线程不同的线程利用的区域,
上述控制单元还在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行由上述不同的线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域未完成写入的情况下,抑制执行该读出指令。
4.如权利要求1所述的处理器,其特征在于,上述处理器还具有地址变换单元,
该地址变换单元将取出指令时取得的虚拟地址变换为物理地址,在变换后的上述物理地址与由上述保存区域预先保存的上述程序计数器之间具有关联的情况下,将请求上述设定单元执行上述设定的请求信息通知给上述设定单元,
上述设定单元从上述地址变换单元取得上述请求信息后,进行上述设定。
5.如权利要求1所述的处理器,其特征在于,上述设定单元还在对利用信息设定表示向上述存储器区域完成了写入之意的内容时,也对由另一处理器管理的另外的利用信息设定表示向上述存储器区域完成了写入之意的内容。
6.如权利要求1所述的处理器,其特征在于,上述一个线程及另一线程用于进行图像的解码处理,
进行图像的解码处理的图像处理系统具有上述处理器。
7.如权利要求1所述的处理器,其特征在于,上述一个线程及另一线程用于进行图像的编码处理,
进行图像的编码处理的图像处理系统具有上述处理器。
8.一种控制方法,用在执行多个线程的处理器中,其特征在于,具有:
设定步骤,在执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令时,对表示是否向该存储器区域完成了写入的利用信息,设定表示该一个线程向该存储器区域完成了写入之意的内容,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用;以及
控制步骤,在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行另一线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域未完成写入的情况下,抑制执行该读出指令,
上述设定步骤具有预先保存与存在于上述位置上的指令相对应的程序计数器的值的保存区域,
上述设定步骤从外部取得上述程序计数器的值后,将该值存放到上述保存区域中,
在与由上述一个线程执行的指令相对应的程序计数器的值和所保存的值一致的情况下,上述设定步骤对上述利用信息设定表示上述一个线程向该存储器区域完成了写入之意的内容,
在上述保存区域中还将上述利用信息和表示上述存储器区域的存储器地址相对应地保存,
上述控制步骤从上述另一线程取得上述读出指令的读出对象即存储器区域的读出对象地址,在上述读出对象地址与上述存储器地址一致的情况下,根据对应的利用信息所示的内容执行及抑制上述读出指令。
9.一种图像处理装置,使用多个线程处理图像,其特征在于,该图像处理装置具有:
设定单元,在执行一个线程中的确保向存储器区域完成了写入的位置上存在的指令时,对表示是否向该存储器区域完成了写入的利用信息,设定表示该一个线程向该存储器区域完成了写入之意的内容,上述一个线程向上述存储器区域进行写入,上述存储器区域由上述一个线程与另一线程共同利用;以及
控制单元,在上述利用信息表示上述一个线程向上述存储器区域完成了写入的情况下,执行另一线程读出上述存储器区域中存在的数据的读出指令,在上述利用信息表示上述一个线程向上述存储器区域未完成写入的情况下,抑制执行该读出指令,
上述设定单元具有预先保存与存在于上述位置上的指令相对应的程序计数器的值的保存区域,
上述设定单元从外部取得上述程序计数器的值后,将该值存放到上述保存区域中,
在与由上述一个线程执行的指令相对应的程序计数器的值和所保存的值一致的情况下,上述设定单元对上述利用信息设定表示上述一个线程向该存储器区域完成了写入之意的内容,
在上述保存区域中还将上述利用信息和表示上述存储器区域的存储器地址相对应地保存,
上述控制单元从上述另一线程取得上述读出指令的读出对象即存储器区域的读出对象地址,在上述读出对象地址与上述存储器地址一致的情况下,根据对应的利用信息所示的内容执行及抑制上述读出指令。
10.如权利要求9所述的图像处理装置,其特征在于,上述图像处理装置对编码后的图像进行解码,
将编码后的一个图像中连续配置的宏块以相互不同的方式分配给上述多个线程,
在确保完成了上述写入的位置上存在的指令是表示完成了如下处理的指令,该处理为可变长解码处理、逆量化/逆频率变换的处理、与运动补偿相关的处理、图像的重构处理及去方块效应滤波处理中的某一个处理,
在对一个宏块判断为完成了上述写入的情况下,控制单元对处理进行控制,以便对位于该一个宏块的后面的下一个宏块执行与判断为完成了写入的处理相同的处理。
11.如权利要求9所述的图像处理装置,其特征在于,上述图像处理装置对图像进行编码,
在一个图像中连续配置的宏块以相互不同的方式分配给上述多个线程,
在确保完成了上述写入的位置上存在的指令是如下处理,该处理为对编码对象的图像数据计算预测误差的减法处理、对预测误差进行量化和频率变换的量化处理、编码处理、参照图像的生成处理及与运动补偿相关的处理中的某一个处理,
在对一个宏块判断为完成了上述写入的情况下,控制单元对处理进行控制,以便对位于该一个宏块的后面的下一个宏块执行与判断为完成了写入的处理相同的处理。
CN201180003728.4A 2010-07-07 2011-07-06 处理器 Active CN102483708B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010154629 2010-07-07
JP2010-154629 2010-07-07
PCT/JP2011/003861 WO2012004990A1 (ja) 2010-07-07 2011-07-06 プロセッサ

Publications (2)

Publication Number Publication Date
CN102483708A CN102483708A (zh) 2012-05-30
CN102483708B true CN102483708B (zh) 2016-01-20

Family

ID=45440979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180003728.4A Active CN102483708B (zh) 2010-07-07 2011-07-06 处理器

Country Status (4)

Country Link
US (1) US8898671B2 (zh)
JP (1) JP5853217B2 (zh)
CN (1) CN102483708B (zh)
WO (1) WO2012004990A1 (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102013008420A1 (de) 2013-05-17 2014-11-20 Abb Technology Ag Antriebseinheit zur Ansteuerung eines Motors
CN108347613B (zh) * 2017-01-25 2020-05-26 龙芯中科技术有限公司 图像宏块并行编码方法和装置
CN107038021B (zh) * 2017-04-05 2019-05-24 华为技术有限公司 用于访问随机存取存储器ram的方法、装置和系统
US10902113B2 (en) * 2017-10-25 2021-01-26 Arm Limited Data processing
US20220206799A1 (en) * 2020-12-30 2022-06-30 Silicon Laboratories Inc. Apparatus for Processor with Hardware Fence and Associated Methods

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1577282A (zh) * 2003-06-27 2005-02-09 英特尔公司 使用监视-存储器等待的被排序的锁定
CN1688974A (zh) * 2001-12-31 2005-10-26 英特尔公司 挂起线程执行直到发生指定的存储器访问的方法和设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3630118B2 (ja) 2001-07-12 2005-03-16 日本電気株式会社 スレッド終了方法及び装置並びに並列プロセッサシステム
JP3798726B2 (ja) 2002-04-26 2006-07-19 インターナショナル・ビジネス・マシーンズ・コーポレーション メモリ・アクセス順序付け及びロック管理の方法、装置、プログラム及び記録媒体
FR2854754B1 (fr) * 2003-05-06 2005-12-16 Procede et dispositif de codage ou decodage d'image avec parallelisation du traitement sur une pluralite de processeurs, programme d'ordinateur et signal de synchronisation correspondants
US8176022B1 (en) * 2006-08-26 2012-05-08 Radames Garcia Locking protocol using dynamic locks and dynamic shared memory

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1688974A (zh) * 2001-12-31 2005-10-26 英特尔公司 挂起线程执行直到发生指定的存储器访问的方法和设备
CN1577282A (zh) * 2003-06-27 2005-02-09 英特尔公司 使用监视-存储器等待的被排序的锁定

Also Published As

Publication number Publication date
JP5853217B2 (ja) 2016-02-09
WO2012004990A1 (ja) 2012-01-12
US8898671B2 (en) 2014-11-25
JPWO2012004990A1 (ja) 2013-09-02
US20120167114A1 (en) 2012-06-28
CN102483708A (zh) 2012-05-30

Similar Documents

Publication Publication Date Title
CN103069398B (zh) 用于存储器存取控制的设备与方法
CN102483708B (zh) 处理器
US9442851B2 (en) Multi-core processor system, control program, and control method
CN103699334B (zh) 用于管理虚拟机磁盘的方法和系统
CN103080912B (zh) 微处理器系统及用于其上的存储器管理单元和管理方法
US9342337B2 (en) Privilege level aware processor hardware resource management facility
TWI386814B (zh) 具動態工作管理能力之多處理器界面及其程式載卸方法
CN102067088A (zh) 多处理器
US20080244222A1 (en) Many-core processing using virtual processors
WO2015057857A1 (en) Computer processor employing dedicated hardware mechanism controlling the initialization and invalidation of cache lines
US20140143524A1 (en) Information processing apparatus, information processing apparatus control method, and a computer-readable storage medium storing a control program for controlling an information processing apparatus
CN113900710B (zh) 扩展存储器组件
KR20200049775A (ko) 재구성 가능한 캐시 아키텍처 및 캐시 일관성을 위한 방법
US11810618B2 (en) Extended memory communication
CN101373444A (zh) 向执行环境揭示系统拓扑
CN102629238B (zh) 支持向量条件访存的方法和装置
CN114691597A (zh) 自适应远程原子操作
US8656120B2 (en) Device, method and computer-readable medium relocating remote procedure call data in heterogeneous multiprocessor system on chip
JP2009026135A (ja) マルチプロセッサ装置
CN113110879B (zh) 指令处理方法及装置
US11176065B2 (en) Extended memory interface
US20220100543A1 (en) Feedback mechanism for improved bandwidth and performance in virtual environment usecases
CN113885943A (zh) 处理单元、片上系统、计算装置及方法
CN112328514A (zh) 一种多线程处理器系统产生独立进程标识的方法和装置
CN102428441B (zh) 处理器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20160316

Address after: Osaka Japan

Patentee after: PANASONIC INTELLECTUAL PROPERTY MANAGEMENT Co.,Ltd.

Address before: Osaka Japan

Patentee before: Matsushita Electric Industrial Co.,Ltd.