CN117591178A - 处理器和编译器 - Google Patents

处理器和编译器 Download PDF

Info

Publication number
CN117591178A
CN117591178A CN202310873859.2A CN202310873859A CN117591178A CN 117591178 A CN117591178 A CN 117591178A CN 202310873859 A CN202310873859 A CN 202310873859A CN 117591178 A CN117591178 A CN 117591178A
Authority
CN
China
Prior art keywords
cycle
counter
variable
mode
signal
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.)
Pending
Application number
CN202310873859.2A
Other languages
English (en)
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.)
Renesas Electronics Corp
Original Assignee
Renesas Electronics Corp
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 Renesas Electronics Corp filed Critical Renesas Electronics Corp
Publication of CN117591178A publication Critical patent/CN117591178A/zh
Pending legal-status Critical Current

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3818Decoding for concurrent execution
    • G06F9/382Pipelined decoding, e.g. using predecoding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/45Exploiting coarse grain parallelism in compilation, i.e. parallelism between groups of instructions
    • G06F8/451Code distribution
    • G06F8/452Loops
    • 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/44Arrangements for executing specific programs
    • G06F9/4401Bootstrapping
    • G06F9/4403Processor initialisation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Logic Circuits (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本公开涉及一种处理器和编译器。当通过可编程设备来配置对循环变量、累加器变量等进行重复计数的计数器电路时,会出现处理延迟。处理器包括可编程逻辑的阵列,并且包括至少一个专用计数器电路,以用于对被重复修改的变量进行计数。

Description

处理器和编译器
相关申请的交叉引用
于2022年08月09日提交的日本专利申请号2022-127072的公开内容(包括说明书、附图和摘要)通过引用以其整体并入本文。
技术领域
本公开涉及处理器和编译器。
背景技术
日本未审查专利申请公开号2003-99409(在下文中,专利文献1)公开了在将动态可重配置处理器和运算合成器组合的系统中,多态电路被折叠成时间序列以重复使用计算器和路由资源。为此,在这种系统中,可以通过增加具有精细粒度的可重配置设备的面积效率来执行程序,可重配置设备诸如是继续使用已经被写过一次的电路的FPGA(现场可编程门阵列)。
日本未审查专利申请公开号2008-71089(在下文中,专利文献2)公开了将以诸如C语言的运动描述语言编写的程序组合到用于诸如动态可重配置处理器的可重写可编程设备的电路装置中。在该运动合成中,生成状态转变机(FSM)和数据路径,并且生成用于根据相应状态按时间序列切换数据路径的电路装置。作为该运动合成中的并行化技术中的一种技术,已知将循环描述合成为流水线电路的方法。
日本未审查专利申请公开号2014-6650(在下文中,专利文献3)公开了在合成流水线电路装置的运动合成中,用于控制流水线的每个阶段的执行的方法。
发明内容
当通过可编程逻辑来配置对循环变量、累加器变量等进行重复计数的计数器电路时,存在处理中出现延迟的问题。
根据本说明书的描述和附图,其他目的和新颖特征将变得明显。
一个实施例的处理器包括多个可编程逻辑的阵列和至少一个专用计数器电路,该至少一个专用计数器电路用于对被重复修改的变量进行计数。
根据本实施例的处理器,由于计数器电路被形成为专用电路,因此可以避免处理中的延迟。
附图说明
图1是图示了根据第一实施例的处理器161的配置的图。
图2是用于说明图像滤波的图。
图3是图示了C语言的滤波过程描述的图。
图4是图示了根据第二实施例的动态可重配置处理器的配置的图。
图5是图示了处理元件PE的配置的图。
图6是图示了第二实施例的循环描述的示例的图。
图7是表示用于对图6的循环的循环变量进行计数的专用计数器电路2的组件的框图。
图8是图示了根据第二实施例的计数器电路的详细配置的图。
图9是图示了根据参考示例的实现计数器的方法的示例的图。
图10是图示了处理元件PE(X)、PE(Y)和PE(Z)的配置的图。
图11是图示了根据第二实施例的修改示例的示例性循环描述的图。
图12是表示用于对图11的循环的循环变量进行计数的专用计数器电路2A的组件的框图。
图13是图示了根据第三实施例的计数器电路202的组件的框图。
图14是图示了根据第三实施例的修改示例的计数器电路302的组件的框图。
图15是图示了根据第四实施例的计数器电路402的组件的框图。
图16是图示了根据第四实施例的修改示例的计数器电路502的配置的图。
图17是图示了根据第五实施例的计数器电路、状态转变控制器和处理元件阵列的图。
图18是图示了根据第五实施例的第一修改示例的计数器电路、状态转变控制器和处理元件阵列的图。
图19是图示了根据第五实施例的第二修改示例的计数器电路、状态转变控制器和处理元件阵列的图。
图20是图示了根据第六实施例的动态可重配置处理器的配置的图。
图21是图示了根据第六实施例的修改示例的计数器电路2X的配置的图。
图22是图示了示例性编程的图,其中使用了终止条件成立信号PS和经反相的终止条件成立信号/PS。
图23是图示了根据第七实施例的计数器电路72的组件的框图。
图24是图示了使用累加器的程序的示例的图。
图25是图示了编译器的配置的图。
图26是图示了由运动合成单元900生成的示例性状态转变机和数据路径上下文的图。
图27是图示了在运动合成期间生成的示例性流水线的图。
图28是图示了在循环重复的次数为4的情况下的流水线电路的执行的示例的图。
图29是图示了流水线化的开销的图。
图30是图示了降低流水线化的开销的示例的图。
具体实施方式
在下文中,将参考附图描述实施例。
第一实施例
图1是图示了根据第一实施例的处理器的配置的图。
处理器161包括阵列162和至少一个计数器电路163。
阵列162包括多个可编程逻辑1。
可编程逻辑1提供诸如加法器、选择器和LUT的计算资源。
计数器电路163是用于对被重复改变的变量进行计数的专用电路。被重复修改的变量例如是循环描述中的循环变量,或者是累加器变量,在循环中增量值被重复增加到该累加器变量中。
在本实施例中,由于计数器电路被形成为专用电路,所以可以解决处理被延迟的问题。
第二实施例
图2是用于说明图像滤波的图。通过FIR(有限脉冲响应)滤波等对图像数据进行卷积。图2示出了3x3像素内核滤波对图像的示例性调整。
图3是图示了C语言的滤波过程描述的图。图像的水平尺寸(x方向)被描述为200像素,垂直尺寸(y方向)被描述为100像素,并且内核被描述为3x3像素。由于可以形成总共两个像素的无效区域(在左右方向上各形成一个像素),所以在x方向上的最大值被设置为(200-2)像素,并且通过以与X方向上相同的方式在上下方向上减去两个像素的无效区域,最大值被设置为(100-2)像素。
诸如CPU(中央处理单元)的处理器按顺序进行处理,基本上如所描述的那样。另一方面,诸如FPGA或动态可重配置处理器或专用硬件的处理器可以通过同时执行多个操作来增加处理速度。
图4是图示了根据第二实施例的动态可重配置处理器的配置的图。动态可重配置处理器包括阵列51,阵列51包括:能够进行诸如加法和减法的基本运算的多个处理元件PE(它们是算术元件,诸如乘法器MUL的较大算术元件)、存储器HMEM、VMEM、用于在它们之间进行连接的导线以及开关。动态可重配置处理器包括状态转变控制器50。状态转变控制器50通过切换对开关和处理元件PE的命令,来控制动态可重配置处理器的状态转变。
图5是图示了处理元件PE的配置的图。处理元件PE包括指令存储器91、算术单元92和寄存器93。
来自状态转变控制器50的指令指针PT指定指令存储器91中的可执行指令。算术单元92执行该指令。寄存器93存储数据。SWI对是否要输入数据线上的数据进行切换。SWO对是否将寄存器93中的数据输出到数据线进行切换。SW切换传输路线。
上述图像滤波可以通过切换来自状态转变控制器50的指令指针和开关SW、SWI、SWO来实现。然后,可以将内循环中的(3x3)内核的滤波处理部分流水线化。但是,对于控制循环的部分,由于因为x=x+1和自引用,左右两边都有相同的循环变量,用于对循环变量进行计数的计数器电路,不能通过流水线化来增加操作频率。
本实施例的动态可重配置处理器包括专用于对循环变量进行计数的计数器电路2。状态转变控制器50通过控制计数器电路2,来控制动态可重配置处理器的状态。
循环控制可以用for或do-while语句来描述。在for语句中,在将循环变量与最大值进行比较之后,增加循环变量。在do-while语句中,在循环变量增加之后,对循环变量和最大值进行比较。该实施例示出了用于对for语句中的循环变量进行计数的计数器电路。
图6是图示了第二实施例的循环描述的示例的图。图7是表示用于对图6的循环的循环变量x进行计数的专用计数器电路2的组件的框图。计数器电路2包括存储单元11、选择器13、加法器12和比较器14。
存储单元11将选择器13的输出存储为计数器值(sCnt)。当写入信号WE被断言时,存储单元11根据从选择器13输出的信号来更新计数器值(sCnt)。
选择器13存储初始值(sInit)。当初始值信号(INIT)被断言时,选择器13向存储单元11输出初始值(sInit)。当初始值信号(INIT)未被断言时,选择器13向存储单元11输出加法器12的输出信号。初始值(sInit)例如是“0”。
加法器12存储增量(sInc)。当加法指令信号(EN)被断言时,加法器12将输出(sCnt)与存储单元11的增量(sInc)相加。增量(sInc)例如是“1”。
比较器14存储最大值(sMax)。比较器14将计数器值(sCnt)与最大值(sMax)进行比较,并且输出表示比较结果的信号。当计数器值(sCnt)达到最大值(sMax)时,比较器14断言循环退出条件成立信号(PS)。
图8是图示了根据第二实施例的计数器电路的详细配置的图。
选择器13包括选择器381和寄存器386。选择器381接收初始值信号(INIT)。寄存器386存储初始值(sInit)。初始值(sInit)例如是“0”。
存储单元11包括寄存器382。寄存器382存储计数器值(sCnt)。
加法器12包括加法器383和寄存器384。加法器383接收加法指令信号(EN)。寄存器384存储增量(sInc)。增量(sInc)例如是“1”。
在本实施例中,通过将计数器电路设为专用电路,可以缩短延迟并且可以改善操作速率。
参考示例
图9是图示了根据参考示例的实现计数器的方法的示例的图。图10是图示了处理元件PE(X)、PE(Y)和PE(Z)的配置的图。
三个PE(X)、PE(Y)和PE(Z)实现计数器电路。如上所述,虽然可编程逻辑中的PE或FPGA的LUT具有较高的自由度,并且可以形成通用电路,但延迟比专用硬件电路的延迟大。
第二实施例的修改示例
图11是图示了根据第二实施例的修改示例的示例性循环描述的图。图11图示了使用do-while语句作为示例性循环描述。图12是表示用于对图11的循环的循环变量x进行计数的专用计数器电路152的组件的框图。计数器电路152包括存储单元11、选择器13、加法器12和比较器64。
计数器电路152的存储单元11、选择器13和加法单元12的配置和操作,与计数器电路2的存储单元11、选择器13和加法单元12的配置和操作相同,并且因此将不重复其描述。
比较器64存储最大值(sMax)。比较器14A将加法器12的输出与最大值(sMax)进行比较。当加法器12的输出达到最大值(sMax)时,比较器64断言循环退出条件成立信号(PS)。
第三实施例
图13是图示了根据第三实施例的计数器电路202的组件的框图。计数器电路202对循环A的循环变量(例如,图3中的x)和循环A中的一个循环之外的循环B的循环变量(例如,图3中的y)进行计数。计数器电路202包括用于对循环A的循环变量进行计数的第一循环计数器22A,并且包括用于对循环B的循环变量进行计数的第二循环计数器22B。
当满足循环A的终止条件时,第一循环计数器22A向第二循环计数器22B输出循环终止条件成立信号(PS1)(第一信号)。当接收到循环终止条件成立信号(PS1)(第一信号)时,第二循环计数器22B将循环B的循环变量递增。当满足循环B的终止条件时,第二循环计数器22B向状态转变控制器50输出循环终止条件成立信号(PS1)(第二信号)。
第一循环计数器22A包括存储单元11A、选择器13A、加法器12A和比较器14A。第二循环计数器22B包括存储单元11B、选择器13B、加法器12B和比较器14B。
存储单元11A存储循环A的循环变量的计数器值(sCnt1)。当写入信号WE被断言时,存储单元11A根据选择器13A的输出信号来更新计数器值(sCnt1)。
选择器13A存储初始值(sInit1)。当初始值信号(INIT)被断言时或当循环退出条件成立信号(PS1)被断言时,选择器13A向存储单元11A输出初始值(sInit1)。当初始值信号(INIT)未被断言并且循环退出条件成立信号(PS1)未被断言时,选择器13A向存储单元11A输出加法器12A的输出信号。初始值(sInit1)例如是“0”。
加法器12A存储增量(sInc1)。当加法指令信号(EN)被断言时,加法单元12A将存储单元11A的输出(sCnt1)与增量(sInc1)相加。增量(sInc1)例如是“1”。
比较器14A存储最大值(sMax1)。比较器14A将计数器值(sCnt1)与最大值(sMax1)进行比较。当计数器值(sCnt1)达到最大值(sMax1)时,比较器14A断言循环退出条件成立信号(PS1)。循环终止条件满足信号(PS1)被发送到选择器13A和第二循环计数器22B的加法器12B。
存储单元11B存储循环B的循环变量的计数器值(sCnt2)。当写入使能信号WE被断言时,存储单元11B根据选择器13B的输出信号来更新计数器值(sCnt2)。
选择器13B存储初始值(sInit2)。当初始值信号(INIT)被断言时,选择器13B向存储单元11B输出初始值(sInit2)。当初始值信号(INIT)未被断言时,选择器13B向存储单元11B输出加法器12B的输出信号。初始值(sInit2)例如是“0”。
加法器12B存储增量(sInc2)。当循环终止条件成立信号(PS1)被断言时,加法单元12B将存储单元11B的输出(sCnt2)与增量(sInc2)相加。增量(sInc2)例如是“1”。
比较器14B存储最大值(sMax2)。比较器14B将计数器值(sCnt2)与最大值(sMax2)进行比较。循环终止条件成立信号(PS2)被发送到状态转变控制器50。
在本实施例的计数器电路202中,当循环A中的重复数达到指定次数时,第一循环计数器22A的比较条件被满足,并且指示加法的信号被发送到第二循环计数器22B,并且第一循环计数器22A本身返回到循环的初始值状态,以使操作可以进行到下一重复操作。当循环B中的重复数达到指定次数时,对第二循环计数器22B进行比较,并且退出循环。然后,可以进行到下一操作。
第三实施例的修改示例
图14是图示了根据第三实施例的修改示例的计数器电路302的组件的图。计数器电路302对循环A的循环变量、循环A中的一个循环之外的循环B的循环变量以及循环B中的一个循环之外的循环C的循环变量进行计数。计数器电路302包括用于对循环A的循环变量进行计数的第一循环计数器22A、用于对循环B的循环变量进行计数的第二循环计数器22B以及用于对循环C的循环变量进行计数的第三循环计数器22C。
由于第一循环计数器22A与第三实施例的相同,因此不再重复说明。
第二循环计数器22B与第三实施例的不同之处在于以下几点。循环终止条件成立信号(PS2)被发送到选择器13B和第三循环计数器22C的加法器12C。
当初始值信号(INIT)被断言时,或者当循环A的终止条件成立信号(PS1)和循环B的终止条件成立信号(PS2)两者被断言时,选择器13B向存储单元11B输出初始值(sInit2)。
第三循环计数器22C包括存储单元11C、选择器13C、加法器12C和比较器14C。
存储单元11C存储循环C的循环变量的计数器值(sCnt3)。当写入使能信号WE被断言时,存储单元11C根据选择器13C的输出信号来更新计数器值(sCnt3)。
选择器13C存储初始值(sInit3)。当初始值信号(INIT)被断言时,选择器13C向存储单元11C输出初始值(sInit3)。当初始值信号(INIT)未被断言时,选择器13C向存储单元11C输出加法器12C的输出信号。初始值(sInit3)例如是“0”。
加法器12C存储增量(sInc3)。当循环A的终止条件成立信号(PS1)和循环B的终止条件成立信号(PS2)两者被断言时,加法器12C将存储单元11C的输出(sCnt3)和增量(sInc3)相加。增量(sInc3)例如是“1”。
比较器14C存储最大值(sMax3)。比较器14C将计数器值(sCnt3)与最大值(sMax3)进行比较。当计数器值(sCnt3)达到最大值(sMax3)时,比较器14C断言循环终止条件成立信号(PS3)。循环终止条件成立信号(PS3)被发送到状态转变控制器50。
第四实施例
图15是图示了根据第四实施例的计数器电路402的组件的框图。计数器电路402对循环的两倍宽的循环变量进行计数。双位宽例如是32位。
计数器电路402包括用于对循环变量的低位进行计数的针对低位的计数器32A、用于对循环变量的高位进行计数的针对高位的计数器32B以及双宽确定单元33。双宽确定单元33基于针对低位的计数器32A的值和针对高位的计数器32B的值,来确定是否满足循环终止条件。低位是32位循环变量的低16位。高位是32位循环变量的高16位。
当循环变量的低阶位超过最大值时,低阶位计数器32A向高阶位计数器32B输出进位信号CR。当接收到进位信号CR时,高阶位计数器32B将循环变量的高阶位递增。
低阶位计数器32A包括存储单元11A、选择器13A、加法器12A和比较器14A。这些组件用于16位。
高阶位计数器32B包括存储单元11B、选择器13B、加法器12B和比较器14B。这些组件用于16位。
存储单元11A存储循环变量的低位的计数器值(sCnt1)。当写入使能信号WE被断言时,存储单元11A根据选择器13A的输出信号来更新计数器值(sCnt1)。
选择器13A存储初始值(sInit1)。当初始值信号(INIT)被断言时,选择器13A向存储单元11A输出初始值(sInit1)。当初始值信号(INIT)未被断言时,选择器13A向存储单元11A输出加法器12A的输出信号。初始值(sInit1)例如是“0”。
加法器12A存储增量(sInc1)。当加法指令信号(EN)被断言时,加法单元12A将存储单元11A的输出(sCnt1)与增量(sInc1)相加。增量(sInc1)例如是“1”。在进位出现时(即,当相加值超过“0xFFFF”时),加法器12A断言进位信号CR。
存储单元11B存储循环变量的高阶位的计数器值(sCnt2)。当写入使能信号WE被断言时,存储单元11B根据选择器13B的输出信号来更新计数器值(sCnt2)。
选择器13B存储初始值(sInit2)。当初始值信号(INIT)被断言时,选择器13B向存储单元11B输出初始值(sInit2)。当初始值信号(INIT)未被断言时,选择器13B向存储单元11B输出加法器12B的输出信号。初始值(sInit2)例如是“0”。
加法器12B存储增量(sInc2)。当进位信号CR被断言时,加法单元12B将存储单元11B的输出(sCnt2)与增量(sInc2)相加。增量(sInc2)例如是“1”。
双宽确定单元33包括比较器34。
比较器14存储最大值(sMax)。比较器14将值(例如,32位)与最大值(sMax)进行比较,该值通过将来自存储单元11A的计数器值(sCnt1)设置为低位并且将来自存储单元11B的计数器值(sCnt2)设置为高位而获得。当计数器值(sCnt2)达到最大值(sMax)时,比较器34断言循环终止条件成立信号(PSX)。循环终止条件成立信号(PSX)被发送到状态转变控制器50。sMax2例如是“0xFFFFFFFF”。
第四实施例的修改示例
图16是图示了根据第四实施例的修改示例的计数器电路502的配置的图。
计数器电路502在第一模式中,对循环A的循环变量和在循环A中的一个循环之外的循环B的循环变量以及在循环B中的一个循环之外的循环C的循环变量进行计数,并且在第二模式中,对循环D的双位宽的循环变量进行计数。
计数器电路装置502包括第一计数器532A、第二计数器532B、第三计数器532C、双宽确定单元533和选择器190。在图16中,框800表示在第二模式中执行的组件。
第一计数器532A在第一模式中对循环A的循环变量进行计数,并且在第二模式中对循环D的循环变量的低位进行计数。
第二计数器532B在第一模式中对循环B的循环变量进行计数,并且在第二模式中对循环D的循环变量的高位进行计数。
第三计数器532C在第一模式中对循环C的循环变量进行计数。
在第二模式中,双宽确定单元533基于第一计数器532A的值和第二计数器532B的值,来确定是否满足循环D的终止条件。在第二模式中,当满足用于终止循环D的条件时,双宽确定单元533向状态转变控制器50断言条件满足EventL。
在第一模式中,当满足循环A的终止条件时,第一计数器532A向第二计数器532B断言条件满足EventL。
在第一模式中,当条件EventL被断言时,第二计数器532B将循环B的循环变量递增。
在第一模式中,当满足循环B的终止条件时,第二计数器532B向第三计数器532C断言条件满足EventM。
在第一模式中,当条件满足信号EventL被断言并且条件满足信号EventM被断言时,第三计数器532C将循环C的循环变量递增。
在第一模式中,当满足循环C的终止条件时,第三计数器532C向状态转变控制器50断言条件满足EventU。
第一计数器532A包括寄存器89A、选择器81A、寄存器82A、寄存器84A、加法器83A、选择器88、寄存器86A和比较器85A。
寄存器89A存储初始值sInit(0)。
当初始值信号Init被断言时,选择器81A输出初始值sInit(0)。当EventL被断言时,选择器81A输出初始值sInit(0)。在第一模式中,当初始值信号Init未被断言并且模式信号mode被断言时,选择器81A输出寄存器82A的计数器值sCnt(0)。在第一模式中,当初始值信号Init未被断言并且模式信号mode未被断言时,选择器81A输出加法器83A的输出。在第二模式中,选择器81A输出双宽确定单元533的加法器183的32位输出的低16位。
寄存器82A将选择器81A的输出存储为计数器值sCnt(0)。
寄存器84A存储增量sInc(0)。
当加法指令信号CntEn被断言时,加法器83A将寄存器82A的输出与寄存器84A的输出相加。
当模式CmpMode被断言时,选择器88输出加法器83A的输出。当模式CmpMode未被断言时,选择器88输出寄存器82A的输出。
寄存器86A存储最大值sMax(0)。
比较器85A基于代码模式,将选择器88的输出的MSB与最大值sMax[0]进行比较。当选择器88的输出的MSB大于或等于最大值sMax[0]时,比较器85A断言条件成立信号EventL。
第二计数器532B包括寄存器89B、选择器81B、寄存器82B、寄存器84B、加法器83B、寄存器86B和比较器85B。
寄存器89B存储初始值sInit(1)。
当初始值信号Init被断言时,选择器81B输出初始值sInit(1)。当EventL被断言并且EventM被断言时,选择器81B输出初始值sInit(1)。在第一模式中,当初始值信号Init未被断言并且模式信号mode被断言时,选择器81B输出寄存器82B的计数器值sCnt(1)。在第一模式中,当初始值信号Init未被断言并且模式信号mode未被断言时,选择器81B输出加法器83B的输出。在第二模式中,选择器81B输出双宽确定单元533的加法器183的32位输出的高16位。
寄存器82B将选择器81B的输出存储为计数器值sCnt(1)。
寄存器84B存储增量sInc(1)。
当加法指令信号CntEn被断言并且条件信号EventL被断言时,加法器83B将寄存器82B的输出与寄存器84B的输出相加。
寄存器86B存储最大值sMax(1)。
比较器85B基于代码模式,将寄存器82B的输出的MSB与最大值sMax(1)进行比较。当通过扩展寄存器82B的MSB而获得的信号等于或大于最大值sMax(1)时,比较器85B断言条件信号EventM。
第三计数器532C包括寄存器89C、选择器81C、寄存器82C、寄存器84C、加法器83C、寄存器86C和比较器85C。
寄存器89C存储初始值sInit[2]。
当初始值信号Init被断言时,选择器81C输出初始值sInit[2]。在第一模式中,当初始值信号Init未被断言并且模式信号mode被断言时,选择器81B输出寄存器82C的计数器值sCnt[2]。在第一模式中,当初始化信号Init未被断言并且模式信号mode未被断言时,选择器81C输出加法器83C的输出。
寄存器82C将选择器81C的输出存储为计数器值sCnt[2]。
寄存器84C存储增量sInc[2]。
当加法指令CntEn被断言并且条件成立信号EventL被断言以及条件成立信号EventM被断言时,加法器83A将寄存器82C的输出与寄存器84C的输出相加。
寄存器86C存储最大值sMax[2]。
比较器85C基于代码模式,将寄存器82C的输出的MSB与最大值sMax[2]进行比较。当寄存器82C的经扩展的MSB大于或等于最大值sMax[2]时,比较器85C断言条件成立信号EventU。
双宽确定单元533包括寄存器184、加法器183、选择器188、寄存器86和比较器185。
寄存器184存储增量sInc[0]。
在第二模式中,当加法指令信号CntEn被断言时,加法器183将通过以下方式而获得的值与寄存器184的输出相加:将从寄存器82A输出的计数器值sCnt[0]设置为低16位,并且将从寄存器82B输出的计数器值sCnt[1]设置为高16位。
当模式CmpMode被断言时,选择器188输出加法器183的输出。当模式CmpMode未被断言时,选择器188输出以下值:其中,从寄存器82A输出的计数器值sCnt[0]被设置为低16位,并且从寄存器82B输出的计数器值sCnt[1]被设置为高16位。
寄存器86存储最大值sMax[0]。
比较器185基于代码模式,将选择器188的输出与最大值sMax[0]进行比较。当选择器188的输出大于或等于最大值sMax[0]时,比较器185断言条件成立信号EventL。
虽然专用计数器电路较快,但缺点在于,当试图处理嵌套的所有循环描述时,电路规模增加。在本实施例中,通过将多个专用计数器电路互锁,可以实现嵌套的计数器电路,例如即使是在三循环描述全部需要32位计数器电路的情况下。
与将三个专用计数器电路全部转换为32位的情况相比,在许多循环描述中,16位计数器电路是足够的,因此本实施例防止了延迟的增加并且实现高速操作。此外,根据本实施例,通过提供大量专用计数器电路并且提供用于将计数器电路连接到可编程逻辑的布线开关,可以避免面积的增加。
当专用计数器电路仅与多个循环描述中的部分(例如,仅内循环描述)匹配时,专用计数器电路可以用于对应的部分,并且未匹配的部分可以通过组合操作资源(诸如,现有的PE或LUT)来实现。
第五实施例
图17是图示了根据第五实施例的计数器电路、状态转变控制器和处理元件阵列的图。
计数器电路502被布置成与状态转变控制器50相邻。
计数器电路502将循环退出条件成立信号PS1、PS2、PS3、PX提供给状态转变控制器50。
状态转变控制器50包括选择器53和状态指定单元52。
选择器53从多个循环退出条件成立信号PS1、PS2、PS3、PX选择用于确定的信号。
状态指定单元52根据所选择的信号,来确定下一状态和对应于每个状态的数据路径上下文。
通过将计数器电路装置502放置在靠近状态转变控制器50的位置,循环退出条件成立信号PS1、PS2、PS3、PX可以不经过处理元件阵列51而被直接发送到状态转变控制器50。结果,可以缩短延迟时间,并且可以高速执行操作。
另一方面,在循环中计数器电路502引用循环变量的值的过程中,存在仅在满足循环退出条件时执行的过程,或者在不满足循环退出条件时执行的过程。此时引用的值是相加前的值或者是相加后的值,这取决于程序如何被编写。
在本实施例中,第一计数器532A的储存单元11A的输出S1和加法器12的输出A1被输出到处理元件阵列51。处理元件阵列51可以使用储存单元11A的输出S1和加法器12的输出A1两者。
对于第二计数器532B和第三计数器532C,存储单元的输出和加法单元的输出可以被输出到处理元件阵列51。
第五实施例的第一修改示例
图18是图示了根据第五实施例的第一修改示例的计数器电路、状态转变控制器和处理元件阵列的图。
第一计数器电路602和第二计数器电路702共同对应于嵌套循环。
第一计数器电路602和第二计数器电路702在16位变量中对应于多个循环,而在32位变量中仅对应于一个循环。第一计数器电路602和第二计数器电路702可以被互锁以对应于多个循环。
在第一模式中,第一计数器电路602对多个循环的循环变量进行计数,该多个循环包括循环A、循环A中的一个循环之外的循环B以及循环B中的一个循环之外的循环C。在第一模式中,第二计数器电路702对多个循环的循环变量进行计数,该多个循环包括循环D、循环D中的一个循环之外的循环E以及循环E中的一个循环之外的循环F。
在第二模式中,第一计数器电路602对双循环内侧的循环G的两倍宽的循环变量进行计数。在第二模式中,第二计数器电路702对循环G中的一个循环之外的循环H的两倍宽的循环变量进行计数。
第一计数器电路装置602包括第一计数器132A、第二计数器132B、第三计数器132C和双宽确定单元133。
第一计数器132A在第一模式中对循环A的循环变量进行计数,并且在第二模式中对循环G的两倍宽的循环变量的低位进行计数。
第二计数器132B在第一模式中对循环B的循环变量进行计数,并且在第二模式中对循环G的两倍宽的循环变量的高位进行计数。
第三计数器132C在第一模式中对循环C的循环变量进行计数。
在第一模式中,当满足循环A的终止条件时,第一计数器132A向第二计数器132B输出条件成立信号PS1A。
在第一模式中,当接收到条件成立信号PS1A时,第二计数器132B将循环B的循环变量递增。在第一模式中,当满足循环B的终止条件时,第二计数器132B向第三计数器132C输出条件成立信号PS2A。
在第一模式中,当接收到条件成立信号PS2A时,第三计数器132C将循环C的循环变量递增。在第一模式中,当满足循环C的终止条件时,第三计数器132C向状态转变控制器50输出条件成立信号PS3A。
在第二模式中,当循环G的循环变量的低阶位超过最大值时,第一计数器132A向第二计数器132B输出条件成立信号PS1A。
在第二模式中,当接收到条件成立信号PS1A时,第二计数器132B将循环G的循环变量的高位递增。
在第二模式中,双宽确定单元133基于第一计数器132A的值和第二计数器132B的值,来确定是否满足循环G的结束条件,并且当满足循环G的结束条件时,输出条件成立信号PSX。
第二计数器电路装置702包括第一计数器232A、第二计数器232B、第三计数器232C和双宽确定单元233。
第一计数器232A在第一模式中对循环D的循环变量进行计数,并且在第二模式中对循环H的两倍宽的循环变量的低位进行计数。
第二计数器232B在第一模式中对循环E的循环变量进行计数,并且在第二模式中对循环H的两倍宽的循环变量的高位进行计数。
第三计数器232C在第一模式中对循环F的循环变量进行计数。
在第一模式中,当满足循环D的结束条件时,第一计数器232A向第二计数器232B输出条件成立信号PS1B。
在第一模式中,当接收到条件成立信号PS1B时,第二计数器232B将循环E的循环变量递增。在第一模式中,当满足循环E的结束条件时,第二计数器232B向第三计数器232C输出条件成立信号PS2B。
在第一模式中,当接收到条件成立信号PS2B时,第三计数器232C将循环F的循环变量递增。在第一模式中,当满足循环F的终止条件时,第三计数器232C向状态转变控制器50输出条件成立信号PS3B。
在第二模式中,当接收到条件成立信号PSX时,第一计数器232A将循环H的循环变量的低阶位递增。
在第二模式中,当循环H的循环变量的低阶位超过最大值时,第一计数器232A向第二计数器232B输出条件成立信号PS1B。
在第二模式中,当接收到条件成立信号PS1B时,第二计数器232B将循环H的循环变量的高位递增。
在第二模式中,双宽确定单元233基于第一计数器232A的值和第二计数器232B的值,来确定是否满足循环H的结束条件,并且当满足循环H的结束条件时,输出条件成立信号PSY。
第五实施例的第二修改示例
图19是图示了根据第五实施例的第二修改示例的计数器电路、状态转变控制器和处理元件阵列的图。
在第二模式中,第二计数器电路702对循环A中的一个循环之外的循环B的两倍宽的循环变量进行计数。
当满足循环A的结束条件时,第一计数器电路602向处理元件阵列51输出循环退出条件成立信号PSX。
处理元件阵列51的至少一个处理元件PE基于循环退出条件成立信号PSX执行逻辑运算,并且在逻辑运算的结果满足预先确定条件时,向第二计数器电路702输出递增指示信号。
当接收到增加指令信号时,第二计数器电路702将循环B的循环变量递增。当满足循环B的结束条件时,第二计数器电路702向状态转变控制器50输出循环退出条件成立信号PSY。
第六实施例
图20是图示了根据第六实施例的动态可重配置处理器的配置的图。
动态可重配置处理器包括第一计数器电路2A、2B、2C和第二计数器电路20A、20B、20C。
第二计数器电路20A、20B、20C是第一计数器电路2A、2B、2C的复制计数器。
第一计数器电路2A对变量A进行计数。第一计数器电路2B对变量B进行计数。第二计数器电路20C对变量C进行计数。
第一计数器电路2A和第二计数器电路20A两者可以同时对A进行计数或仅一者对A进行计数。第一计数器电路2B和第二计数器电路20B两者可以同时对变量B进行计数或仅一者对变量B进行计数。第一计数器电路2C和第二计数器电路20C两者可以同时对变量C进行计数或仅一者对变量C进行计数。
第一计数器电路2A、2B、2C位于状态转变控制器50附近。第一计数器电路2A、2B、2C的输出被发送到状态转变控制器50,并且用于动态可重配置处理器的控制。
第二计数器电路20A、20B、20C被布置在存储器VMEM、HMEM附近。由于存储器VMEM、HMEM被定位为远离第一计数器电路2A、2B、2C和状态转变控制器50,因此尝试从第一计数器电路2A、2B、2C向存储器VMEM、HMEM提供循环退出条件成立信号或变量的计数器值,需要通过PE阵列51的导线,导致较大的延迟。
第二计数器电路20A、20B、20C可以通过向邻近存储器VMEM、HMEM提供循环退出条件成立信号或变量的计数器值来减少延迟。
在图20的示例中,左上角没有布置计数器电路,但可以布置第二计数器电路。
第六实施例的修改示例
可以使用退出条件成立信号PS,来实现仅在满足循环退出条件时执行的过程。另一方面,当不满足循环退出条件时,必须将退出条件成立信号PS进行反转以执行处理。例如,当不满足循环退出条件时,可以断言指示寄存器的写入使能的信号。
在处理元件阵列51中将退出条件成立信号PS反相是可以预期的,但是存在使用算术单元并且增加延迟的缺点。这种问题可以通过由计数器电路输出经反相的退出条件成立信号PS来避免。
图21是图示了根据第六实施例的修改示例的计数器电路2X的配置的图。计数器电路2X与第一实施例的计数器电路2的不同之处在于,计数器电路2X包括反相单元114。
反相单元114通过将循环退出条件成立信号PS反相,来生成经反相的循环退出条件成立信号/PS,并且输出经反相的循环退出条件成立信号/PS。反相单元114例如由反相器构成。
图22图示了示例性编程,其中利用了退出条件成立信号PS和经反相的退出条件信号/PS。
对于内循环中的数组的写入,由于在内循环未退出时实现写入,通过将退出条件成立信号PS反相而获得的信号/PS可以针对数组被用作指示对寄存器实现写入的信号。
这消除了需要单独提供用于在计数器电路和存储器之间进行信号反相的通用算术单元。
为了在内循环退出之后写入数组2,退出条件成立信号PS可以针对数组2被用作对寄存器实现写入的命令。
第七实施例
计数器电路可以被如下使用。计数器电路也可以被用在循环内部的计算中。累加器(其每次将从其他部件提供的值加到寄存器)也可以被构建在处理元件PE中。然而,由于需要以可编程布线的方式将寄存器和加法器相互连接,以形成从寄存器开始到寄存器结束的循环,因此存在延迟变大的问题。
图23是图示了根据第七实施例的计数器电路72的组件的框图。
计数器电路72对累加器变量进行计数,在循环中增量被重复增加到累加器变量中。
与第一实施例中描述的计数器电路2类似,计数器电路72包括存储单元11、选择单元134、加法单元12和比较器14。
图24是图示了使用累加器的程序的示例的图。
在图24的程序中,累加器变量acum自引用,并且在for语句描述的循环内部执行累加(累加器)。例如,当计算图像区域中的像素值的平均时,需要这种累加器。
输入到加法器12的增量α可以从处理元件PE给出。因此,循环内部的处理电路可以是固定电路。对于输入增量α的部分,可以通过插入流水线寄存器来抑制延迟量。
通过将加法器与浮点相关联,加法器12中的加法器还可以被用作浮点累加器。由于浮点算术通常比整数算术具有更大的延迟,因此可以通过使用计数器电路72来减少延迟的量。
第八实施例
在图像处理中,通过在x方向和y方向上使用双嵌套循环描述来移动二维平面上的点的位置,移动要被处理的地方。AI中的卷积过程还可以包括z方向上的过程。当AI中的这种图像处理和卷积由专用逻辑、可编程逻辑等处理时,将电路装置流水线化作为获得高吞吐量的一种方式是可以预期的。
但是,如果缩短流水线电路的延迟并且加快速度,则存在计数器电路成为关键路径(最大延迟的路径,即在提高操作频率上成为瓶颈的部分)的问题。特别地,如果循环是嵌套和复用的,则计数器电路更有可能成为关键路径。
这种问题可以通过如上述实施例中描述的使计数器电路专用来解决。
本实施例描述了一种动态可重配置处理器、其编译方法、流水线化电路的综合、对计数器电路进行映射的方法及其示例。
本实施例的编译器生成要由动态可重配置处理器执行的代码,动态可重配置处理器包括上述实施例中所描述的计数器电路。
图25是图示了编译器的配置的图。
编译器包括运动合成单元900、技术映射单元904、布局和路由单元905以及代码生成单元906。
运动合成单元900生成要被分配给状态转变控制器50的状态转变机(FSM),并且生成作为对应于相应状态的电路装置的数据路径上下文。
运动合成单元900基于合成约束(诸如,以操作描述语言(诸如C语言)描述的程序)、包括延迟信息的电路库、操作频率和电路规模,来生成状态转变机(FSM)和对应于状态转变机的状态的数据路径上下文。
在数据流分析时,运动合成单元900提取上述实施例中所描述的专用计数器电路。由于在调度运动合成时可以考虑专用计数器电路,因此容易管理计数器电路的资源数目和延迟。
技术映射单元904根据PE的操作位宽,来执行诸如逻辑组合的优化和映射过程。
布置布线单元905确定算术单元、寄存器和存储器的位置,并且将可编程布线连接。
代码生成单元906生成用于状态转变控制器(STC)的配置代码和用于PE阵列的配置代码。
图26是图示了由运动合成单元900生成的示例性状态转变机和数据路径上下文的图。
通过利用电路切换,动态可重配置处理器可以仅根据上下文移动所需的部分,而不将多个条件的电路和初始值电路混合。例如,在图像处理中,动态可重配置处理器在内循环中的用于图像处理的流水线电路、用于设置专用计数器电路的寄存器初始值电路、另一个前处理和后处理之间进行切换。这些被分配给动态可重配置处理器的数据路径上下文,并且状态转变机根据成像区域来切换数据路径上下文。
图27是图示了在运动合成期间生成的示例性流水线的图。
运动合成单元900将最内层循环内部的处理流水线化,以便改进处理吞吐量。在生成数据流图之后,运动合成单元900约束和调度用于流水线化的资源(诸如算术单元)。此时,为了避免数据危害,运动合成单元900执行寄存器转发等,然后执行流水线化,以折叠(collapse)多个状态并且将它们合成为流水线电路。
图27示出了一个示例,其中四状态电路被折叠到一个上下文中作为一个状态中的四级电路,从而将吞吐量改进四倍。
如上所述,循环中的处理可以通过流水线化来改进吞吐量。在流水线化时,可以通过在操作中间插入寄存器或F/F来减少延迟。
但是,内循环和外循环的循环描述容易出现性能瓶颈,因为它们不能被流水线化。特别是在嵌套循环的情况下,由于需要将多个计数器电路互锁,因此难以增加操作频率。因此,运动合成单元900将多个循环的描述映射到对应于上述实施例中所描述的多个循环的专用计数器电路。
图28是图示了循环重复的次数为4的情况下的流水线电路的执行的示例的图。
在流水线电路中,需要针对序言(prologue)引入数据所需的周期和针对尾声(epilogue)排出数据所需的周期。在单状态四级流水线电路的情况下,如图28中所示,需要序言的三个周期和尾声的三个周期。
图29是图示了流水线的开销的图。
如果在双嵌套循环中仅内循环A被流水线化,则在单状态四级流水线电路之外还将存在另一个循环,如图29中所示。每次执行外循环B时,内循环A的序言和尾声的时间就变成间隙,导致执行周期的开销。
图30是图示了减少流水线的开销的示例的图。
运动合成单元900生成数据路径上下文,以使第一循环计数器22A在循环A的每次重复的第一阶段结束之后,将循环A的循环变量递增。运动合成单元900生成数据路径上下文,以使第二循环计数器22B在循环A的最后一次迭代中的第一阶段结束之后,将循环B的循环变量递增。
结果,在循环B的各重复次数中,在循环A的重复次数为第k次的第一阶段结束之后,循环A的重复次数为第(k+1)次的第一阶段开始。在循环B的第s次重复计数中的、循环A的最后一次重复计数中的第一阶段结束之后,在第(s+1)次重复计数中的循环A的第一次重复计数中的第一阶段开始。
如图30中所示,外循环可以进入内循环,以形成单个循环。结果,可以减少每次外循环循环时出现的与内循环的序言和尾声相关联的开销。结果,可以减少循环的总数目。
在综合流程中,与计数器电路相对应的电路可以被提取,并且在技术映射时可以被映射到专用计数器电路。还可以确定该电路是否与专用计数器电路匹配,使用多个专用计数器电路根据多嵌套循环描述划分电路,在其间连接可编程布线等。
尽管已经基于实施例,对本发明人做出的发明进行了具体描述,但本发明不限于上述实施例,并且不用说,在不脱离本发明要旨的情况下,可以进行各种修改。

Claims (15)

1.一种处理器,包括:
多个可编程逻辑的阵列;以及
至少一个专用计数器电路,用于对被重复修改的变量进行计数。
2.根据权利要求1所述的处理器,
其中所述计数器电路对循环描述中的循环变量进行计数。
3.根据权利要求1所述的处理器,
其中所述计数器电路对累加器变量进行计数,在循环内增量值被重复增加到所述累加器变量中。
4.根据权利要求1所述的处理器,
其中所述计数器电路包括选择单元、存储单元、加法单元和比较器,
其中所述选择单元选择并输出初始值或所述加法单元的输出,
其中所述存储单元存储所述选择单元的输出,
其中所述加法单元将所述存储单元的输出与增量值相加,并且
其中所述比较器将所述加法单元的输出与最大值进行比较,并且输出表示比较结果的信号。
5.根据权利要求2所述的处理器,
其中所述计数器电路包括第一计数器和第二计数器,所述第一计数器用于对第一循环的循环变量进行计数,所述第二计数器用于对在所述第一循环中的一个循环之外的第二循环的循环变量进行计数,
其中当满足所述第一循环的结束条件时,所述第一计数器向所述第二计数器输出第一信号,并且
其中当接收到所述第一信号时,所述第二计数器将所述第二循环的循环变量递增。
6.根据权利要求5所述的处理器,
其中所述处理器还包括状态转变控制器,所述状态转变控制器用于通过控制所述可编程逻辑和所述计数器电路,来控制所述处理器的状态转变,并且
其中当满足所述第二循环的结束条件时,所述第二计数器向所述状态转变控制器输出第二信号。
7.根据权利要求2所述的处理器,
其中所述计数器电路包括:第一计数器,用于对循环变量的低位进行计数;第二计数器,用于对所述循环变量的高位进行计数;以及双宽确定单元,用于基于所述第一计数器的值和所述第二计数器的值,来确定是否满足所述循环的结束条件,并且
其中当所述循环变量的所述低位超过最大值时,所述第一计数器向所述第二计数器输出进位信号,并且当接收到所述进位信号时,所述第二计数器将所述循环变量的所述高位递增。
8.根据权利要求2所述的处理器,
其中,在第一模式中,所述计数器电路对多个循环的循环变量进行计数,所述多个循环包括第一循环和在所述第一循环中的一个循环之外的第二循环,并且在第二模式中,所述计数器电路对第三循环的两倍宽的循环变量进行计数,
其中所述计数器电路包括:第一计数器,用于在所述第一模式中对所述第一循环的循环变量进行计数,并且在所述第二模式中对所述第三循环的循环变量的低位进行计数;第二计数器,用于在所述第一模式中对所述第二循环的循环变量进行计数,并且在所述第二模式中对所述第三循环的循环变量的高位进行计数;以及双宽确定单元,用于在所述第二模式中基于所述第二计数器的值和所述第三计数器的值,来确定是否满足所述第一循环的结束条件,
其中所述第一计数器在所述第一模式中,当满足所述第一循环的所述结束条件时,向所述第二计数器输出第一信号,
其中所述第二计数器在所述第一模式中,当接收到所述第一信号时,将所述第二循环的循环变量递增,
其中所述第一计数器在所述第二模式中,当所述第三循环的循环变量的所述低位超过所述最大值时,向所述第二计数器输出所述第一信号,并且
其中所述第二计数器在所述第二模式中,当接收到所述第一信号时,将所述第三循环的循环变量的所述高位递增。
9.根据权利要求1所述的处理器,
其中所述处理器还包括状态转变控制器,所述状态转变控制器用于通过控制所述可编程逻辑和所述计数器电路,来控制所述处理器的状态转变,并且
其中所述计数器电路被布置成与所述状态转变控制器相邻。
10.根据权利要求2所述的处理器,
其中所述至少一个计数器电路包括第一计数器电路和第二计数器电路,
其中所述第一计数器电路在第一模式中,对包括第一循环和所述第一循环之外的第二循环的多个循环的循环变量进行计数,所述第二计数器电路在所述第一模式中,对包括第三循环和所述第三循环之外的第四循环的多个循环的循环变量进行计数,
其中所述第一计数器电路在第二模式中,对在所述第二循环内侧的第五循环的两位宽的循环变量进行计数,所述第二计数器电路在所述第二模式中,对在所述第五循环中的一个循环之外的第六循环的两位宽的循环变量进行计数,
其中所述第一计数器电路包括:第一计数器,用于在所述第一模式中对所述第一循环的循环变量进行计数,并且在所述第二模式中对所述第五循环的循环变量的低位进行计数;第二计数器,用于在所述第一模式中对所述第二循环的循环变量进行计数,并且在所述第二模式中对所述第五循环的循环变量的高位进行计数;以及双宽确定单元,用于在所述第二模式中,基于所述第一计数器的值和所述第二计数器的值,来确定是否满足所述第五循环的结束条件,并且当满足所述第五循环的结束条件时,输出所述第五循环的条件成立信号,
其中所述第一计数器在所述第一模式中,当满足所述第一循环的所述终止条件时,向所述第二计数器输出第一条件成立信号,
其中所述第二计数器在所述第一模式中,当接收到所述第一条件成立信号时,将所述第二循环的循环变量递增,
其中所述第一计数器在所述第二模式中,当所述第五循环的循环变量的低位超过最大值时,向所述第二计数器输出第一条件成立信号,
其中所述第二计数器在所述第一模式中,当接收到所述第一条件成立信号时,将所述第二循环的循环变量递增,
其中所述第一计数器在所述第二模式中,当所述第五循环的循环变量的低位超过最大值时,向所述第二计数器输出所述第一条件成立信号,
其中所述第二计数器在所述第二模式中,当接收到所述第二条件成立信号时,将所述第五循环的循环变量的高位递增,
其中所述第二计数器电路包括:第一计数器,用于在所述第一模式中对所述第三循环的循环变量进行计数,在所述第二模式中对所述第六循环的循环变量的低位进行计数;第二计数器,用于在所述第一模式中对所述第四循环的循环变量进行计数,并且在所述第二模式中对所述第六循环的循环变量的高位进行计数;以及双宽确定单元,用于在所述第二模式中,基于所述第一计数器的值和所述第二计数器的值,来确定是否满足所述第六循环的结束条件,
其中所述第一计数器在所述第一模式中,当满足所述第三循环的终止条件时,向所述第二计数器输出所述第一条件成立信号,
其中所述第二计数器在所述第一模式中,当接收到所述第一条件成立信号时,将所述第四循环的所述变量递增,
其中所述第一计数器在所述第二模式中,当接收到所述第五循环的条件成立信号时,将所述第六循环的循环变量的所述低位递增,
其中所述第一计数器在所述第二模式中,当所述第六循环的循环变量的所述低位超过最大值时,向所述第二计数器输出所述第一条件成立信号,并且
其中所述第二计数器在所述第二模式中,在接收到所述第一条件成立信号时,将所述第六循环的循环变量的所述高位递增。
11.根据权利要求2所述的处理器,
其中所述至少一个计数器电路包括:第一计数器电路,用于对所述第一循环的循环变量进行计数;以及第二计数器电路,用于对所述第一循环中的一个循环之外的第二循环的循环变量进行计数,
其中当满足所述第一循环的所述结束条件时,所述第一计数器电路向所述可编程逻辑输出第一信号,
其中所述可编程逻辑基于所述第一信号执行逻辑运算,并且当所述逻辑运算的结果满足预先确定条件时,向所述第二计数器电路输出增加指令信号,并且
其中在接收到所述增加指示信号时,所述第二计数器电路将所述第二循环的循环变量递增。
12.根据权利要求11所述的处理器,
所述处理器还包括状态转变控制器,所述状态转变控制器用于通过控制所述可编程逻辑和所述计数器电路,来控制所述处理器的状态转变,
其中当满足所述第二循环的结束条件时,所述第二计数器电路向所述状态转变控制器输出第二信号。
13.根据权利要求1所述的处理器,
所述处理器还包括存储器和状态转变控制器,所述状态转变控制器用于通过控制所述可编程逻辑和所述计数器电路,来控制所述处理器的状态转变,
其中所述至少一个计数器电路包括第一计数器电路和第二计数器电路,所述第一计数器电路被布置在所述状态转变控制器附近并且对第一变量进行计数,所述第二计数器电路被布置在所述存储器附近并且对所述第一变量进行计数。
14.根据权利要求4所述的处理器,
其中所述计数器电路还包括反相单元,所述反相单元被配置成生成表示所述比较结果的信号的反相信号。
15.一种编译器,所述编译器生成要由动态可重配置处理器执行的代码,包括:
运动合成单元,
其中所述动态可重配置处理器具有:可编程处理器的阵列;第一计数器,用于对第一循环的循环变量进行计数;第二计数器,用于对在所述第一循环中的一个循环之外的第二循环的循环变量进行计数;以及状态转变控制器,用于通过控制所述可编程处理器、所述第一计数器和所述第二计数器,来控制所述动态可重配置处理器的状态转变,并且
其中所述运动合成单元将所述第一循环内的过程流水线化为多个阶段;在所述第一循环的每次迭代中的第一阶段结束之后,使所述第一计数器将所述第一循环的循环变量递增;以及生成数据路径上下文,所述数据路径上下文使所述第二计数器在所述第一循环的最后一次重复中的第一阶段结束之后,将所述第二循环的循环变量递增。
CN202310873859.2A 2022-08-09 2023-07-17 处理器和编译器 Pending CN117591178A (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2022127072A JP2024024312A (ja) 2022-08-09 2022-08-09 プロセッサ、およびコンパイラ
JP2022-127072 2022-08-09

Publications (1)

Publication Number Publication Date
CN117591178A true CN117591178A (zh) 2024-02-23

Family

ID=89809559

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310873859.2A Pending CN117591178A (zh) 2022-08-09 2023-07-17 处理器和编译器

Country Status (4)

Country Link
US (1) US20240053970A1 (zh)
JP (1) JP2024024312A (zh)
CN (1) CN117591178A (zh)
DE (1) DE102023121153A1 (zh)

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3921367B2 (ja) 2001-09-26 2007-05-30 日本電気株式会社 データ処理装置および方法、コンピュータプログラム、情報記憶媒体、並列演算装置、データ処理システム
JP4770657B2 (ja) 2006-09-13 2011-09-14 日本電気株式会社 パイプライン合成システム、方法及びプログラム
JP7211177B2 (ja) 2019-03-14 2023-01-24 栗田工業株式会社 純水製造装置の制御方法
JP7084660B1 (ja) 2021-02-19 2022-06-15 菱熱工業株式会社 植物栽培システム、植物栽培方法、植物搬送装置

Also Published As

Publication number Publication date
DE102023121153A1 (de) 2024-02-15
JP2024024312A (ja) 2024-02-22
US20240053970A1 (en) 2024-02-15

Similar Documents

Publication Publication Date Title
US6023742A (en) Reconfigurable computing architecture for providing pipelined data paths
US20160162291A1 (en) Parallel arithmetic device, data processing system with parallel arithmetic device, and data processing program
US8510534B2 (en) Scalar/vector processor that includes a functional unit with a vector section and a scalar section
US7305649B2 (en) Automatic generation of a streaming processor circuit
US7171535B2 (en) Serial operation pipeline, arithmetic device, arithmetic-logic circuit and operation method using the serial operation pipeline
US8413086B2 (en) Methods and apparatus for adapting pipeline stage latency based on instruction type
US5404555A (en) Macro instruction set computer architecture
Kulkarni et al. Pixie: A heterogeneous Virtual Coarse-Grained Reconfigurable Array for high performance image processing applications
Van Meerbergen et al. PHIDEO: high-level synthesis for high throughput applications
CN115151898A (zh) 基于用户规范的可重配置架构上的操作单元图的高效执行
US7152218B2 (en) Behavioral synthesis system, behavioral synthesis method, control program, readable recording medium, logic circuit production method, and logic circuit
EP1612694A1 (en) Processor with a reconfigurable ALU array
US20240004663A1 (en) Processing device with vector transformation execution
US20080120497A1 (en) Automated configuration of a processing system using decoupled memory access and computation
JP2006011825A (ja) 再構成可能演算装置および半導体装置
CN117591178A (zh) 处理器和编译器
JP2005508554A (ja) データ操作を利用したデータの計算と処理方法、及び、その装置
JP5370352B2 (ja) Simd型プロセッサアレイシステム及びそのデータ転送方法
David et al. Self-timed architecture of a reduced instruction set computer
JPH0844773A (ja) 自動高位合成方法
US9606798B2 (en) VLIW processor, instruction structure, and instruction execution method
US7673117B2 (en) Operation apparatus
JP2007233990A (ja) 情報処理装置およびその回路設計方法
JP5382503B2 (ja) ブランチング・プログラム・マシン及び並列プロセッサ
CN114365110A (zh) 重复使用相邻simd单元用于快速宽结果生成

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication