CN103262029B - 可编程控制器 - Google Patents

可编程控制器 Download PDF

Info

Publication number
CN103262029B
CN103262029B CN201180059507.9A CN201180059507A CN103262029B CN 103262029 B CN103262029 B CN 103262029B CN 201180059507 A CN201180059507 A CN 201180059507A CN 103262029 B CN103262029 B CN 103262029B
Authority
CN
China
Prior art keywords
mentioned
data
address
write
bit
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
CN201180059507.9A
Other languages
English (en)
Other versions
CN103262029A (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.)
Hitachi Ltd
Original Assignee
Hitachi 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 Hitachi Ltd filed Critical Hitachi Ltd
Publication of CN103262029A publication Critical patent/CN103262029A/zh
Application granted granted Critical
Publication of CN103262029B publication Critical patent/CN103262029B/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/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • G06F9/30018Bit or string 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/30043LOAD or STORE instructions; Clear instruction

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System Of A Hierarchy Structure (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Programmable Controllers (AREA)

Abstract

本发明提供一种可编程控制器,能够防止在具备阶梯式语言用的比特运算处理器的可编程控制器中多发的、由于读取修改写入所引起的流水线处理的中断。在将读取修改写入的对象数据加载到缓冲寄存器(141)中、且预先将对象数据的地址保持在地址保持电路(22)中的流水线阶段(读取阶段(R))之后,设置执行比特运算以及比特数据的合并的流水线阶段(执行阶段(EX)),之后设置在读取阶段(R)所保持的地址中存储合并结果的流水线阶段(写入阶段(W))。

Description

可编程控制器
技术领域
本发明涉及搭载有对钢铁、电力、上下水管等设施或各种设备高速地进行顺序(sequence)控制的比特运算处理器的可编程控制器。
背景技术
在可编程控制器中,现有技术使用了能够更有效地表述顺序控制的阶梯式语言。阶梯式语言中,大多情况下将开关的开闭状态等由1比特表示的信息作为输入,将继电器(relay)输出等由1比特表示的信息作为输出。因此,可编程控制器为了高速地执行阶梯式语言所特有的1比特数据处理,多数情况下搭载专用的比特运算处理器。
比特运算处理器支持适于处理1比特数据的专用指令组,但由于保存运算结果的目的地是通用的存储器元件,因此必须与8比特或16比特这样的存储器元件的存取单位尺寸一致。为了对通用的存储器元件写入1比特的数据,需要如下动作读取修改写入动作,即以存取单位尺寸对存储器进行读取,对所读取的一部分数据进行变更,再次以存取单位尺寸进行写入(write),因此在阶梯式语言处理中存在存储器存取次数比通用语言处理多的特征。
作为与比特运算处理器的高速化相关联的现有技术,在专利文献1中记载了以下方法:预先将过去多次的字(word)单位的存储器存取地址与数据存储在能高速存取的缓冲器中,在包括想要存取的比特在内的字数据的地址与存储于缓冲器中的地址一致的情况下,通过使用缓冲器上的数据而不是存储器中的数据,从而减少存储器存取次数。
另一方面,在通用计算机的领域,由于存储器存取的高速化,一直以来使用高速缓冲存储器(cache memory),但随着近几年的半导体微细化,需要高速缓冲存储器用内部SRAM(Static Random Access Memory)的软错误对策,在高速缓冲存储器中附加ECC(Error Check and Correct:纠错码)来保护的情况也变多。以4字节左右设计ECC的付加单位的情况较多,因此向高速缓冲存储器写入的写入单位也变为4字节以上。即使是通用计算机的指令也支持1字节或2字节的写入,但若进行这种ECC付加单位以下的尺寸的写入,则对高速缓冲存储器执行读取修改写入。
在简单结构的高速缓冲存储器中执行读取修改写入的情况下,高速缓冲存储器占有2周期以上,其间,处理器的流水线(pipeline)处理会被中断。作为即使是读取修改写入也不会使流水线处理中断的方法,设置多级的存储式缓冲器,执行将存储处理丢弃的处理。专利文献2中记载了附加有ECC的高速缓冲存储器的存储式缓冲器的结构。另外,存储式缓冲器所执行的存储处理的丢弃是利用执行除了加载(load)/存储指令以外的指令时的高速缓冲存储器的空隙时间来执行存储处理的动作,因此并不是可靠地消除流水线处理的中断,而是一种尽可能减少中断的概率的方法。
此外,在专利文献3中记载了使高速缓冲存储器多端口化,通过分为取(fetch)(读取)操作数的流水线阶段和写入操作数的流水线阶段,从而有效地执行进行存储器间数据传送的指令的方法,但并没有记载高速缓存缺失(cache miss)时的动作、或操作数的取与写入的地址竞争时的动作,完全没有涉及到读取修改写入的处理。
【现有技术文献】
【专利文献】
【专利文献1】JP特开平11-39160号公报
【专利文献2】国际公开第2007/088597号
【专利文献3】JP特开平4-40524号公报
发明内容
(发明要解决的问题)
在阶梯式语言处理用的比特运算处理器中为了高速化而考虑也采用流水线处理或高速缓冲存储器,但如上述那样,在阶梯式语言处理中读取修改写入会经常发生,因此需要防止读取修改写入所引起的流水线处理的停止(stoll)(中断)。若使用如专利文献2那样附带地址比较器的多级存储式缓冲器,则能够减少流水线处理中断的概率,但采用阶梯式语言记述的程序与通用语言相比具有比特单位下的存储指令的比率高的倾向,必须要使存储式缓冲器的级数更大,导致实现所需的电路规模变大。
另一方面,当前的大部分通用处理器的指令组采纳RISC(ReducedInstruction Set Computer:精简指令集计算机)的思想,因此分别以不同的指令执行运算处理和加载/存储。即,运算处理按照运算指令在通用寄存器间执行,采用其他的指令执行存储器与寄存器间的加载/存储。因此,通用处理器用的流水线成为适于寄存器间运算的结构,但阶梯式语言处理以存储器与累加器(accumulator)间的运算为中心,通用处理器用的流水线结构其处理效率未必高。
通过具体例来表示通过现有技术的流水线以及存储器的结构来执行阶梯式语言处理时的问题。图14表示典型的RISC处理器的流水线结构。PC(Program Counter)是计算指令地址的阶段,IF(Instruction Fetch)是取得指令的阶段,D(Decode)是对所取得的指令进行解码的阶段,EX(Execute)是执行寄存器间运算或者存储器地址计算的阶段,M(Memory)是读取存储器或者写入到存储器中的阶段,WB(Write Back)是将运算结果或者读取值回写到寄存器的阶段。在执行伴随着比特数据运算的读取修改写入的情况下,将M阶段分为M1和M2这两个阶段,在M1周期内执行读取,在M2周期内执行比特数据的合并和写入。
在此,考虑采用上述现有技术的流水线结构来执行图7(a)例示的梯形图的情况。图7(b)是将图7(a)例示的梯形图变换为通常的阶梯式语言的指令串而得到的程序例。此外,图7(c)是将图7(a)例示的梯形图变换为用于提高上述现有技术的流水线结构来执行的指令串的程序例。
变量X0~X3表示输入,变量Y2~Y3表示输出,分别作为1比特长的数据而存储于存储器内的两个字数据内。图8表示上述变量被分配到存储器中并被保存的情形。图7(b)中,LD(Load)是从存储器向累加器的加载指令、AND为将从存储器加载的值与累加器值的逻辑“与”存储到累加器中的指令,ST(Store)为将累加器值存储到存储器中的指令,OR为将从存储器加载的值和累加器值的逻辑“或”存储到累加器中的指令。此外,在图7(c)中,LD为从存储器向寄存器的加载指令,AND为将两个寄存器值的逻辑“与”存储到寄存器中的指令,ST为将寄存器值存储到存储器中的指令,OR为将两个寄存器值的逻辑“或”存储到寄存器中的指令。
图15为表示采用图14的流水线结构来执行图7(c)所示的指令串时的动作的时序图。如图15所示,第1以及第2个LD指令分别从周期t0以及t1开始,原样执行直到周期t5以及t6为止,并且数据被加载到寄存器R1和R2。第3个AND指令原样执行直到周期t2到t4,但在周期t5的EX阶段还没有读取到所需的变量X1的数据,因此流水线在1周期期间停止(“-”符号)。能在第2个LD指令完成M阶段执行的下一周期t6中利用变量X1的数据,之后原样执行直到周期t8为止。第4个ST指令从周期t3开始,但伴随着周期t5的前一指令的停止而一起停止。接下来,执行周期t6以及t7之后,在M阶段经周期t8和t9这两个周期,来执行读取修改写入。因此,第5个LD指令除了周期t5外,在周期t9中也会停止。
以下同样,第6个LD指令分别在周期t5以及t9停止,第7个OR指令以及第8个ST指令分别在周期t9以及t11停止。此外,第8个ST指令经周期t14和t15这两个周期来执行读取修改写入。如以上说明的那样,在现有技术的流水线结构中,通常的阶梯式语言在执行由6个指令记述的处理时需要8个指令,并且会在3个周期中产生流水线的停止,因此直到完成所有处理为止需要总计17个周期。
本发明的目的在于提供一种在具备对阶梯式语言进行处理的比特运算处理器的可编程控制器中适用的、不会引起由读取修改写入等带来的流水线处理的停止的流水线的结构。进而,其目的在于提供一种在具备高速缓冲存储器的比特运算处理器中适用的流水线和高速缓冲存储器的结构。
(用于解决课题的手段)
在对阶梯式语言进行处理的比特运算处理器中,为了不引起流水线处理的停止,可在下一个周期执行的下一个指令的EX阶段利用EX阶段的运算结果,并且设置事先读取成为读取修改写入的对象的存储器的内容的新的阶段、即R(Read)阶段,在接下来的EX阶段执行比特运算以及比特数据的合并,将其结果在最后的W(Write)阶段存储到存储器中即可。
在此,为了实现上述目的,本发明的可编程控制器以汇集了多个成为比特运算处理的对象的1比特的数据的字为单位执行存储器的读写,其特征在于,具备:比特运算处理器,其通过流水线处理机构并行地执行程序所包含的比特运算处理指令串,上述比特运算处理器所具备的流水线阶段中,以字单位从存储器读入成为运算对象的数据的读取阶段之后是运算阶段,在上述运算阶段之后,是将包括通过上述运算阶段运算出的比特运算结果在内的字数据写入到与在上述读取阶段读入的数据相同的地址上的写入阶段。
此外,本发明的特征在于,上述存储器为至少2路径以上的组相关方式或者全相关方式的高速缓冲存储器,该可编程控制器具备:索引保持寄存器以及路径保持寄存器,将在上述读取阶段读入的高速缓冲存储器目录的索引信息以及路径信息保持到上述写入阶段为止。
此外,为了即使在对存储器进行存取的指令连续的情况下,也不使流水线处理停止,优选上述存储器为能够在一个流水线阶段处理周期时间内独立执行一次以上的读取和一次以上的写入的2端口以上的存储器。
另外,在专利文献3中,记载有高速缓冲存储器读取、运算、高速缓冲存储器写入的顺序的流水线结构,但由于目的是独立地执行读取和写入,因此对读取和写入能够指定不同的地址,因此在高速缓冲存储器写入时执行高速缓存命中判定。即,不考虑执行读取修改写入,需要2读取+1写入的3端口存储器等,因此其目的和构成不同于本发明。
(发明效果)
根据本发明,在具备比特运算处理器的可编程控制器中所执行的程序中,不会引起伴随着读取修改写入的流水线处理的停止,因此能够高效地处理通过阶梯式语言所记述的程序。此外,在具备高速缓冲存储器的比特运算处理器中也同样不会引起流水线处理的停止,因此能够高效地处理由阶梯式语言所记述的程序。此外,在执行存储指令时先进行的读取阶段执行高速缓存命中判定,从而不需要写入阶段的高速缓存替换处理,因此流水线控制变得简单。
附图说明
图1为表示第1实施方式涉及的可编程控制器所具备的比特运算处理器的内部结构以及流水线结构的图。
图2为表示第1实施方式涉及的可编程控制器的整体结构的图。
图3为表示采用2端口存储器作为数据存储器时的结构的框图。
图4为表示第1实施方式涉及的比特运算处理器的运算阶段的详细结构的图。
图5为表示第2实施方式涉及的高速缓冲存储器的结构的图。
图6为表示第2实施方式涉及的比特运算处理器的运算阶段的详细结构的图。
图7(a)为用于说明比特运算处理器的动作的梯形图、(b)和(c)为其程序例。
图8为表示在图7的程序中使用的向存储器分配变量的图。
图9为表示通过比特运算处理器执行的指令的指令格式的图。
图10为表示相对于图7(b)的程序的指令码列被保存于存储器中的情形的图。
图11为表示第1以及第2实施方式涉及的比特运算处理器的动作例的时序图。
图12为表示在第2实施方式涉及的比特运算处理器中产生了高速缓存缺失时的动作例的时序图。
图13为将第1实施方式涉及的流水线结构与图14相对比来表现的图。
图14为表示典型的RISC处理器的流水线结构的图。
图15为表示现有技术中的比特运算处理器的动作例的时序图。
具体实施方式
以下,采用图1~图13说明用于实施本发明的方式。
《第1实施方式》
图1为表示本发明的第1实施方式涉及的可编程控制器具备的比特运算处理器的内部结构以及流水线结构的图。此外,图13为将第1实施方式涉及的流水线结构与图14的现有技术进行对比来表现的图。如图1以及图13所示,本实施方式涉及的流水线结构由(1)程序计数器(PC)阶段、(2)取指令(IF)阶段、(3)解码(D)阶段、(4)存储器读取(R)阶段、(5)运算执行(EX)阶段、(6)存储器写入(W)阶段这6段构成。
PC阶段具备将表示刚刚之前的指令地址的PC(程序计数器)101的值与常数“1”或者指定的寄存器值相加的加法运算器102、选择表示加法运算结果或者分支目的地地址的寄存器值的选择器103,将应在刚刚之前选择的指令之后执行的指令的指令地址在指令地址寄存器111中置位,作为该阶段的输出。在IF阶段,从指令缓冲器30读出与在指令地址寄存器111中置位的指令地址相对应的指令,并在指令寄存器121中置位。
在D阶段,具备对读出的指令进行解释的解码器122、对通过解码器122从指令提取的地址所指定的寄存器值进行加法运算的加法运算器123,在解码后的指令伴随存储器存取的情况下生成数据地址并在数据地址寄存器131中置位。此外,虽然省略了图示,但按照解码结果取出寄存器选择或运算功能选择等之后阶段的控制所需的控制信息。
在R阶段,从数据存储器20读出与在数据地址寄存器131中所示的数据地址相应的数据。读出的数据经由执行与来自下一个EX阶段的旁路数据之间的选择的选择器132,被置位到字缓冲器141中。此外,置位在数据存储器20内所具备的地址保持电路22中,以使在W阶段可再度利用数据地址寄存器131所示的数据地址。
在EX阶段,具有ALU(Arithmetic Logic Unit:运算器)142、以及比特合并机构143,使用在字缓冲器141中置位的数据值和/或指定的寄存器值来执行由指令指示的运算。此时,在执行比特数据的运算的情况下,从运算对象的字数据中提取指定的比特位置的比特数据并执行运算,使用比特合并机构143来将运算结果的比特数据嵌入到该比特位置,由此生成字数据。在保存结果的目的地为寄存器的情况下,对寄存器文件152执行写入,在所保存的目的地为数据存储器20的情况下,将应保存的运算结果的数据写入到写入缓冲器151中。
在W阶段,在R阶段中置位到地址保持电路22的数据地址、即在R阶段读出数据时相同的数据存储器20内的数据地址中保存置位到写入缓冲器151的数据。
图2为表示第1实施方式涉及的可编程控制器的整体结构的图。如图2所示,可编程控制器1000构成为具备CPU(Central Processing Unit)模块1、I/O(Input/Output)模块2A以及2B、连接这些元件的I/O总线3、以装卸自如的方式与CPU模块1连接的程序输入装置4。I/O模块2A、2B分别具有I/O总线连接电路和I/O接口电路,按照所需的I/O规模和接点数来改变种类和数量。
CPU模块1构成为具备比特运算处理器10、数据存储器20、指令缓冲器30、I/O总线控制电路40、存储器控制器50、外部RAM(Random AccessMemory)60、ROM(Read Only Memory)70、通用微处理器80、通信I/F(Interface)90。
数据存储器20中保存的规定地址范围的数据群分别对应于在与连接于I/O模块2A、2B上的外部设备(省略图示)之间交换的输入数据或者输出数据。I/O总线控制电路40控制I/O总线3,将从与I/O模块2A、2B连接的外部设备得到的输入数据写入到数据存储器20中,此外,将从数据存储器20读出的输出数据经由I/O总线3输出到与I/O模块2A、2B连接的外部设备。
若相对于由比特运算处理器10请求的指令地址的指令被蓄积于缓冲器内,则指令缓冲器30返回,在该指令没有处于缓冲器内的情况下,对存储器控制器50请求读入来自外部RAM60的指令。存储器控制器50按照来自比特运算处理器10、指令缓冲器30、I/O总线控制电路40、通用微处理器80的请求,执行外部RAM60的读写或者ROM70的读取。此外,通用微处理器80掌控经由通信I/F90将从程序输入装置4加载的梯形程序写入到外部RAM60等、可编程控制器1000整体的控制。使通用微处理器80工作的程序被保存于ROM70中。
另外,在本实施方式中,比特运算处理器10、数据存储器20、指令缓冲器30、I/O总线控制电路40、以及存储器控制器50被内置在系统LSI(Large Scale Integration)100中。
图3为表示采用作为本实施方式涉及的数据存储器20而优选的2端口存储器时的结构的图。如图3所示,数据存储器20构成为具备:具有地址选择器201、地址保持寄存器221以及222的地址保持电路22;写入地址选择器215;写入数据选择器204;和存储器阵列21。
地址选择器201选择比特运算处理器10的数据地址寄存器131(图1)的值和从I/O总线控制电路40输出的I/O数据地址中的任一个。地址保持寄存器221、222将R阶段的执行中所使用的数据地址保持到2周期后的W阶段为止。即,在第1段的地址保持寄存器221中保持数据地址来作为R阶段的输出数据,将该值作为EX阶段的输出数据而复制并保持到第2段的地址保持寄存器222中,从而能在W阶段使用。
写入地址选择器215选择数据地址寄存器131的值和地址保持寄存器222的值中的任一个值。写入数据选择器204选择写入缓冲器151的值与从I/O总线控制电路40输出的I/O数据的值中的任一个值。
存储器阵列21由可在一个周期内访问读取用的端口1和写入用的端口2这两个端口的2端口存储器构成。因此,能在同一周期内并行执行与被流水线处理的某一指令在R阶段的处理和并行执行的其他指令在W阶段的处理。在此,存储器阵列21为2端口存储器,但也可为在一个周期内可访问1个以上的读取用端口和1个以上的写入用端口的3端口以上的存储器。另外,在来自I/O总线控制电路40的存储器存取时分别独立地执行读取和写入,因此不使用地址保持电路22。
图4为表示与第1实施方式涉及的比特运算处理器的运算阶段(包括EX阶段、一部分其他阶段的要素)的详细结构的图。如图4所示,运算阶段构成为除了ALU142之外还具备:选择器144以及145,选择ALU142的输入;选择器132(R阶段的要素),选择从数据存储器20读取的1字(16比特)数据或者用于由下一个指令再次运算中使用该运算阶段的运算结果的旁路数据中的任一个数据;字缓冲器141,保持该选出的字数据;比特合并机构143,将作为运算结果的ALU142的输出与所输入的字数据合并;写入缓冲器151,保持比特合并后的数据;和寄存器文件152(W阶段的要素),保持累加器或通用寄存器等的数据。ALU142能执行1比特长度或者1个字即16比特长度的运算。
图9为表示通过比特运算处理器10所执行的指令的指令格式的图。如图9所示,指令具有两种形式,但均为32比特固定长度。指令形式1由5比特的指令码(OP:Operation)、4比特的比特位置字段(BA:BitAddress)、23比特的字地址字段(WA:Word Address)构成,以比特数据作为对象。指令形式2由5比特的指令码(OP)、4比特的寄存器指定字段(RA:Register Address)、23比特的字地址字段(WA)构成,以字数据作为对象。
接下来,以图7以及图8所示的梯形程序为例,参照图1,使用图11的时序来说明本实施方式涉及的比特运算处理器10的动作。图10表示对图7(b)的梯形程序的上述的指令形式1的指令码列被保存于程序存储器(外部RAM60)中的情形,从地址A处起依次保存指令码列。
首先,第1个LD指令从周期t0开始,原样执行直到周期t5为止。此时,在周期t0(PC阶段),计算LD指令的地址并被置位到指令地址寄存器111中。在周期t1(IF阶段),从指令缓冲器30读取该指令并置位于指令寄存器121中。在周期t2(D阶段)中,指令被解码,并识别为LD指令。在第1个LD指令中,应读取的字地址在指令中被直接指定,因此相应的字地址被置位到数据地址寄存器131中。在周期t3(R阶段),从数据存储器20读入包括成为对象的比特数据在内的与1个字相应的数据,并置位到字缓冲器141中。在周期t4(EX阶段),成为对象的变量X0的比特被抽取并被置位到寄存器文件152所包含的累加器中。在周期t5(W阶段),不进行任何动作(图中网状表示部分)。
第2个AND指令从周期t1开始,原样执行直到周期t6为止。另外,在周期t6(W阶段)不进行任何动作。此时,与第1个LD指令同样地执行PC阶段到R阶段。在周期t5(EX阶段),抽取了成为对象的变量X1的比特之后,由ALU142计算与累加器的内容的逻辑“与”,并再次置位到累加器中。在本实施例中,在EX阶段前执行的R阶段中,读取包括变量X1的字数据,因此不会如现有技术的例子(图15)那样在AND指令的EX阶段停止流水线处理。
第3个ST指令从周期t2开始,原样执行直到周期t7为止。与第1个LD指令同样地执行PC阶段到R阶段。在ST指令中也在R阶段事先执行数据的读取是本实施方式的重要特征。在周期t6(EX阶段),读出累加器值(1比特),与字缓冲器141的值(1字)合并后的结果被置位到写入缓冲器151中。在周期t7的W阶段,在数据存储器20中保存写入缓冲器151的内容。此时,作为保存目的地的存储器地址,使用在保持有R阶段所使用的值的地址保持电路22中被存储的内容。如上所述,根据本实施方式的流水线结构,在执行1比特数据的写入时也不会发生流水线处理的停止。
以下通过相同的动作,第4个LD指令从周期t3到周期t8、第5个OR指令从周期t4到周期t9、第6个ST指令从周期t5到周期t10分别都是不停止流水线处理的情况下被执行的。如上所述,根据本实施方式,在执行6个指令的期间完全不会产生流水线处理的停止,能够将执行图7(b)所示的6个指令中记述的处理所需要的周期数从现有技术的17个周期缩短到11个周期。
如以上说明那样,根据具备第1实施方式涉及的比特运算处理器的可编程控制器,能够在无流水线处理停止的情况下以1周期间隔(pitch)执行阶梯式语言处理所特有的比特运算处理,因此能够高速地执行通过阶梯式语言记述的程序。
《第2实施方式》
接下来,对由高速缓冲存储器构成第1实施方式中的数据存储器20(参照图2)的本发明的第2实施方式进行说明。图5为表示第2实施方式涉及的高速缓冲存储器的结构的图。如图5所示,作为数据存储器20的高速缓冲存储器20A为2路组相关(2way set associative)方式的高速缓冲存储器,构成为具备地址选择器201A、索引(index)保持寄存器221A以及222A、路径(way)选择器203、写入数据选择器204A、路径0标签(tag)存储器205、路径1标签存储器206、LRU(Least Recently Used)存储器207、路径0数据存储器208、路径1数据存储器209、命中判定电路210、回写控制电路211、路径数据选择器212、路径保持寄存器213以及214。图1的地址保持电路22由具有索引保持寄存器221A、222A的地址保持电路1(22A)、以及具有路径保持寄存器213、214的地址保持电路2(22B)构成。
路径数据存储器208以及209分别具有256个目录,各目录分别保持16字节(8字)的数据。高速缓冲存储器的存取单位为16字节,将该16字节单位的数据称为1行(line)。标签存储器205以及206分别具有256个目录,各目录由有效比特V(Valid)、脏位D(Dirty)以及标签地址(图5中略记为“标签”)。LRU存储器207具有256个目录,保持最近使用过的路径。
地址选择器201A选择比特运算处理器10的数据地址寄存器131(图1)的值、和从I/O总线控制电路40输出的I/O数据地址中的任一个,从其中提取12比特的标签地址、和8比特的索引值。索引保持寄存器221A、222A将从R阶段的执行时所使用的数据地址抽取的索引值的部分(8比特)保持至2周期后的W阶段。同样地,路径保持寄存器213、214将在R阶段命中的路径保持至W阶段为止。
路径选择器203将在第2段索引保持寄存器222A中存储的索引值、和在第2段路径保持寄存器214中存储的命中路径输出到路径数据存储器208、209,作为在W阶段执行写入的索引值和路径。写入数据选择器204A选择后述的写入缓冲器151A的值、和从I/O总线控制电路40输出的1行量的I/O数据的值中的任一个值。
命中判定电路210按每个路径比较存取的数据地址的上位12比特和从标签存储器205、206输出的标签值,判定命中或者错误。路径数据选择器212根据命中判定电路210的输出,选择路径0数据或者路径1数据中的任一个行数据。另外,在来自I/O总线控制电路40的高速缓冲存储器存取时分别独立地执行高速缓冲存储器的读取和写入,因此不使用地址保持电路1、2(22A、22B)。
在高速缓存缺失时LRU存储器207的输出所示的驱逐路径(不是最近使用过的路径一方的路径)的对象目录被包括在成为回写模式的对象的地址范围中且变脏的情况下,即执行了数据的更新的情况下,回写控制电路211将与标签同时读出的数据发送到存储器控制器50并更新外部RAM60(图2)的存储内容。另外,对与I/O数据地址相当的规定地址范围,将动作切换为直写模式并立即执行存储内容的更新,因此不执行回写动作。此外,通过未图示的读取控制电路,向该驱逐的对象目录读入成为高速缓存缺失的行数据。
另外,构成这些高速缓冲存储器20A的标签存储器205、206以及路径数据存储器208、209优选由可在一个周期内并行访问读取用的端口和写入用的端口这两个端口的2端口以上的存储器构成,由此能够消除因对存储器的存取相互竞争而产生的流水线处理的停止。此外,在此,高速缓冲存储器20A为2路组相关方式,但也可为3路径以上的组相关方式或全相关方式。
图6为表示第2实施方式涉及的比特运算处理器的运算阶段(包括EX阶段、一部分其他阶段的要素)的详细结构的图。如图6所示,该运算阶段构成中,附加将上述第1实施方式涉及的运算阶段构成(图4)中的输入和输出数据的尺寸变更为1行长度(16字节=128比特)、且保持1行长度的数据后合并运算结果的字数据的单元,其他构成要素与图4相同,因此省略重复的说明。
选择器132A(R阶段的要素)选择从高速缓冲存储器20A读取的1行长度(16字节)的数据中的1字(16比特)、或者由下一个指令在再次运算中使用该运算阶段的运算结果的旁路数据中的任一个。行缓冲器146保持所读取的1行长度的数据。此外,字合并机构147将比特合并机构143的输出、即运算结果的字数据合并到在行缓冲器146中保持的行数据中。行缓冲器151A保持合并后的与1行相应的量的数据。
在此,与上述相同,以图7以及图8所示的梯形程序为例,说明本实施方式涉及的比特运算处理器的动作。高速缓冲存储器20A通过能可在一个周期执行读取动作和写入动作的2端口存储器构成,并且假定对象数据全部进行高速缓存命中时的动作与上述的图11的时序图相同。本实施方式的动作与上述的第1实施方式不同之处在于:以1行为单位执行R阶段以及W阶段的数据的读取以及写入,在EX阶段,对由选择器132A提取出的对象字执行运算,将运算结果的字数据合并到在行缓冲器146中保持的行数据中来生成要写入的行数据。
接下来,使用图12的时序图来说明在图7(b)的梯形程序中的第3个ST指令中引起高速缓存缺失时的动作。第1个LD指令和第2个AND指令的动作与图11的情况相同。若第3个ST指令在R阶段(周期t5)发生了高速缓存缺失,则为了经由存储器控制器50读入外部RAM60的数据,例如流水线处理从周期t5停止到周期t14。但是,在周期t15再次开始R阶段后,无流水线处理的停止来执行。如上那样即使发生了对ST指令的高速缓存缺失的情况下,在R阶段仅执行高速缓冲存储器行的替换即可,因此高速缓冲存储器的控制变得简单。
另外,ST指令的下一个指令所存取的数据地址具有与ST指令相同的索引值,且即使在下一个指令成为高速缓存缺失的情况下,若为2路组相关以上的高速缓冲存储器,则该目录不会在该ST指令在W阶段改写行数据之前就被清除。
如以上说明,通过具备内置第2实施方式涉及的高速缓冲存储器的比特运算处理器的可编程控制器,能够无流水线处理的停止地,以1周期间隔执行阶梯式语言处理所特有的比特运算处理,因此能够高速地执行由阶梯式语言记述的程序。
以上,结束了实施本发明的方式的说明,但本发明的实施方式并不限于上述内容,在不脱离本发明的主旨的范围内能够进行各种变更。
符号说明:
1    CPU模块
2A、2B I/O模块
3    I/O总线
4    程序输入装置
10   比特运算处理器
20   数据存储器
20A  高速缓冲存储器
21   存储器阵列
22、22A、22B  地址保持电路
30   指令缓冲器
40   I/O总线控制电路
50   存储器控制器
60   外部RAM
70   ROM
80   通用微处理器
90   通信I/F
100  系统LSI
1000 可编程控制器

Claims (6)

1.一种可编程控制器,以汇集了多个成为比特运算处理的对象的1比特的数据的字为单位执行存储器的读写,该可编程控制器的特征在于,
具备:比特运算处理器,通过流水线处理机构并行地执行程序所包括的比特运算处理指令串,
上述比特运算处理器所具备的流水线阶段中,以字单位从存储器读入成为运算对象的数据的读取阶段之后是运算阶段,在上述运算阶段之后,是将包括通过上述运算阶段运算出的比特运算结果在内的字数据写入到与在上述读取阶段读入的数据相同的地址上的写入阶段,
上述存储器为了将在上述读取阶段中读取的数据的地址保持到上述写入阶段为止而具备:第1地址保持电路,在上述运算阶段中保持上述读取阶段的地址;和第2地址保持电路,在上述写入阶段中保持上述第1地址保持电路所保持的地址。
2.一种可编程控制器,以汇集了多个成为比特运算处理的对象的1比特的数据的字为单位执行存储器的读写,该可编程控制器的特征在于,
具备:比特运算处理器,通过流水线处理机构并行地执行程序所包括的比特运算处理指令串,
上述比特运算处理器所具备的流水线阶段中,以字单位从存储器读入成为运算对象的数据的读取阶段之后是运算阶段,在上述运算阶段之后,是将包括通过上述运算阶段运算出的比特运算结果在内的字数据写入到与在上述读取阶段读入的数据相同的地址上的写入阶段,
上述存储器为至少2路径以上的组相关方式或者全相关方式的高速缓冲存储器,
上述存储器为了将从在上述读取阶段读取出的高速缓冲存储器目录的地址提取的索引信息以及在上述读取阶段中获取的路径信息保持到上述写入阶段而具备:第1地址保持电路,在上述运算阶段中保持上述读取阶段的索引信息以及路径信息;第2地址保持电路,在上述写入阶段中保持上述第1地址保持电路所保持的索引信息以及路径信息。
3.根据权利要求1或2所述的可编程控制器,其特征在于,
上述比特运算处理器,
在执行上述比特运算处理指令中的比特数据的存储指令时,
在上述读取阶段读入包括存储对象的比特在内的原始字数据并保持在存储部中,
将在上述运算阶段运算出的上述比特运算的结果的比特数据合并到上述保持的原始字数据中。
4.根据权利要求1或2所述的可编程控制器,其特征在于,
上述存储器为能够在一个流水线阶段处理周期时间内执行一次以上的读取和一次以上的写入的2端口以上的存储器。
5.根据权利要求2所述的可编程控制器,其特征在于,
在上述读取阶段执行高速缓存命中判定,在上述写入阶段,在由上述地址保持电路所保持的上述索引信息以及路径信息所示的高速缓冲存储器目录中,写入合并包括上述比特运算的结果在内的字数据而得到的行数据。
6.根据权利要求2所述的可编程控制器,其中,
通过所存储的地址范围,切换直写模式和回写模式。
CN201180059507.9A 2010-12-10 2011-11-28 可编程控制器 Active CN103262029B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2010275719A JP5480793B2 (ja) 2010-12-10 2010-12-10 プログラマブルコントローラ
JP2010-275719 2010-12-10
PCT/JP2011/077328 WO2012077516A1 (ja) 2010-12-10 2011-11-28 プログラマブルコントローラ

Publications (2)

Publication Number Publication Date
CN103262029A CN103262029A (zh) 2013-08-21
CN103262029B true CN103262029B (zh) 2015-10-14

Family

ID=46207008

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180059507.9A Active CN103262029B (zh) 2010-12-10 2011-11-28 可编程控制器

Country Status (3)

Country Link
JP (1) JP5480793B2 (zh)
CN (1) CN103262029B (zh)
WO (1) WO2012077516A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2529892B (en) 2014-09-08 2017-04-12 Imagination Tech Ltd Efficient loading and storing of data

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101689108A (zh) * 2007-05-17 2010-03-31 富士通株式会社 运算单元、处理器和处理器体系结构

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH05120135A (ja) * 1991-10-25 1993-05-18 Oki Electric Ind Co Ltd キヤツシユ制御方式
JPH0954694A (ja) * 1995-08-16 1997-02-25 Nec Corp パイプラインプロセッサおよびその処理方法
US5933651A (en) * 1995-09-29 1999-08-03 Matsushita Electric Works, Ltd. Programmable controller
JPH0997180A (ja) * 1995-09-29 1997-04-08 Matsushita Electric Works Ltd プログラマブルコントローラ
JP3019818B2 (ja) * 1997-10-09 2000-03-13 日本電気株式会社 データ処理方法
JP2001125770A (ja) * 1999-10-29 2001-05-11 Matsushita Electric Works Ltd 演算方法及び演算装置
JP3498673B2 (ja) * 2000-04-05 2004-02-16 日本電気株式会社 記憶装置
JP2003044357A (ja) * 2001-07-27 2003-02-14 Nec Computertechno Ltd キャッシュ先取り方式
JP2003196084A (ja) * 2001-12-25 2003-07-11 Toshiba Corp リードモディファイライトユニットを有するシステム
JP2005242457A (ja) * 2004-02-24 2005-09-08 Matsushita Electric Works Ltd プログラマブルコントローラ
JP2008129771A (ja) * 2006-11-20 2008-06-05 Konica Minolta Business Technologies Inc メモリシステムおよび情報処理装置

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101689108A (zh) * 2007-05-17 2010-03-31 富士通株式会社 运算单元、处理器和处理器体系结构

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
ARM流水线关键技术分析与代码优化;邱铁 西方 迟宗正;《单片机与嵌入式系统应用》;20090301(第03期);正文第24页左侧栏第24行-第24页右侧栏第7行,附图1 *

Also Published As

Publication number Publication date
JP2012123719A (ja) 2012-06-28
CN103262029A (zh) 2013-08-21
JP5480793B2 (ja) 2014-04-23
WO2012077516A1 (ja) 2012-06-14

Similar Documents

Publication Publication Date Title
US5848432A (en) Data processor with variable types of cache memories
CN103513964B (zh) 循环缓冲器打包
CN104657110B (zh) 具有固定数量的可变长度指令的指令高速缓存器
CN105095116A (zh) 缓存替换的方法、缓存控制器和处理器
US6813701B1 (en) Method and apparatus for transferring vector data between memory and a register file
CN101379481A (zh) 处理元件、混合模式并行处理器系统、处理元件方法、混合模式并行处理器方法、处理元件程序、以及混合模式并行处理器程序
US6513107B1 (en) Vector transfer system generating address error exception when vector to be transferred does not start and end on same memory page
EP2198370B1 (en) Second chance replacement mechanism for a highly associative cache memory of a processor
JP2008107983A (ja) キャッシュメモリ
CN103473185A (zh) 缓存写入的方法、缓存装置和存储系统
US20160217079A1 (en) High-Performance Instruction Cache System and Method
US20040243767A1 (en) Method and apparatus for prefetching based upon type identifier tags
CN103262029B (zh) 可编程控制器
US20040078544A1 (en) Memory address remapping method
JP3906363B2 (ja) クラスタ化スーパスカラプロセッサ及びクラスタ化スーパスカラプロセッサにおけるクラスタ間の通信制御方法
US7111127B2 (en) System for supporting unlimited consecutive data stores into a cache memory
CN114911724A (zh) 一种基于多bank的cache预取技术的访存结构
CN102289363B (zh) 控制数据流的方法以及计算机系统
CN101699391B (zh) 提高Java处理器取指令带宽的字节码缓冲装置及使用方法
CN110096307B (zh) 通信处理器
JPWO2008155802A1 (ja) キャッシュメモリ制御装置、およびパイプライン制御方法
CN112486904A (zh) 可重构处理单元阵列的寄存器堆设计方法及装置
US6625720B1 (en) System for posting vector synchronization instructions to vector instruction queue to separate vector instructions from different application programs
US20040128475A1 (en) Widely accessible processor register file and method for use
CN105843589B (zh) 一种应用于vliw类型处理器的存储器装置

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