技术领域
[0001] 本发明涉及计算机高性能计算领域,具体来说,涉及一种关于数据流计算带宽实时优化的方法。
相关背景技术
[0002] 高性能计算旨在同时处理多个任务、指令或数据项,其实现依赖于高性能计算机系统,该系统通过网络连接将成千上万个处理器以特定方式有序组织。这种组织不仅涉及网络的互联拓扑和通信协议,还涵盖操作系统和中间件软件等层面。高性能计算的核心目标在于提供超越传统计算机的计算速度,并解决传统计算机无法应对的复杂问题。
[0003] 在计算机体系结构的计算模型中,控制流与数据流是两大主要分类。控制流计算机,即冯·诺伊曼型计算机,作为主流体系,遵循指令顺序驱动操作,数据的运算参与取决于当前指令的需求。相比之下,数据流计算模型则采用数据驱动方式,指令的执行依赖于其所需操作数的完备性,执行结果则进一步驱动后续指令的执行。
[0004] 数据流计算系统通常由多个计算节点构成,每个节点均具备强大的运算能力,但控制能力相对较弱,且复杂度较低。这些节点内部包含多个定点运算单元和浮点运算单元,分别对应定点运算流水线和浮点运算流水线。在每个时钟周期,流水线会从准备好的指令中选择一条执行。然而,不同计算应用中定点指令与浮点指令的比例存在差异,这直接影响了对定点运算和浮点运算带宽的需求。
[0005] 在数据流计算的节点内部,指令发射机制扮演着关键角色,如图3所示,指令队列用于保存指令的实时执行信息,而指令发射逻辑则负责选择并发射指令至相应的运算单元。然而,传统指令发射方式存在一定的局限性:当定点指令比例较高而浮点指令较少时,浮点运算单元的计算流水线可能处于空闲状态,而定点流水线的带宽则可能紧张。这种固定且无法调整的硬件带宽分配方式,不仅降低了计算的执行效率,还可能在数据量过大时导致带宽不足,进而影响数据的正常传输和运算请求的及时响应,最终降低运算处理速度。
[0006] 针对相关技术中的问题,目前尚未提出有效的解决方案。
具体实施方式
[0062] 为进一步说明各实施例,本发明提供有附图,这些附图为本发明揭露内容的一部分,其主要用以说明实施例,并可配合说明书的相关描述来解释实施例的运作原理,配合参考这些内容,本领域普通技术人员应能理解其他可能的实施方式以及本发明的优点。
[0063] 根据本发明的实施例,提供了一种关于数据流计算带宽实时优化的方法。
[0064] 现结合附图和具体实施方式对本发明进一步说明,如图1所示,根据本发明实施例的关于数据流计算带宽实时优化的方法,该方法包括:
[0065] S1、从数据流的指令队列中提取运算指令,并通过环形缓冲区内的计数器记录每种类型运算指令的写入次数和写入时间,将写入次数和写入时间传输至带宽判断器进行初次带宽判断。
[0066] 具体的,从数据流的指令队列中提取运算指令,并通过环形缓冲区内的计数器记录每种类型运算指令的写入次数和写入时间,将写入次数和写入时间传输至带宽判断器进行初次带宽判断包括:
[0067] S11、获取数据流的指令队列,并将指令队列分配至运算流水线,运算流水线包括定点运算流水线和浮点运算流水线。
[0068] 具体的,获取数据流的指令队列,并将指令队列分配至运算流水线,运算流水线包括定点运算流水线和浮点运算流水线包括:
[0069] S111、获取数据流的指令队列,并检查指令队列中指令的状态;
[0070] S112、基于检查完成后的指令,获取并判断定点运算流水线和浮点运算流水线的状态;
[0071] S113、基于定点运算流水线和浮点运算流水线的判断结果,将指令队列中的指令传输至指令发射逻辑;
[0072] S114、指令发射逻辑根据指令的类型,选择对应的流水线,并将对应的指令从指令队列中移除,分配至所选的流水线;
[0073] S115、定点运算流水线和浮点运算流水线分别接收并执行分配到的指令,并基于执行结果更新指令发射逻辑的状态。
[0074] S12、从定点运算流水线和浮点运算流水线中分别提取定点运算指令和浮点运算指令。
[0075] S13、将提取的定点运算指令和浮点运算指令分别存储至对应的环形缓冲区,并利用环形缓冲区中的计数器记录写入次数和写入时间,写入次数包括定点写入次数和浮点写入次数,写入时间包括定点写入时间和浮点写入时间。
[0076] S14、将记录的写入次数和写入时间传输至带宽判断器,利用带宽判断器进行初次带宽判断。
[0077] 具体的,将记录的写入次数和写入时间传输至带宽判断器,利用带宽判断器进行初次带宽判断包括:
[0078] S141、将记录的定点写入次数、浮点写入次数、定点写入时间及浮点写入时间传输至带宽判断器。
[0079] S142、基于传输结果,带宽判断器利用带宽公式计算得到写入总带宽。
[0080] 具体的,带宽公式为:
[0081]
[0082] 式中,Z表示写入总带宽值;
[0083] w1表示定点写入次数;
[0084] t1表示定点写入时间;
[0085] w2表示浮点写入次数;
[0086] t2表示浮点写入时间。
[0087] S143、将计算得到的写入总带宽与节点带宽进行对比,进行初次带宽判断。
[0088] 具体的,将计算得到的写入总带宽与节点带宽进行对比,进行初次带宽判断包括:
[0089] 若写入总带宽小于等于节点带宽,则带宽判断器不发送调节指令至时钟调节器;
[0090] 若写入总带宽大于节点带宽,则带宽判断器发送指令至时钟调节器,并根据预设的周期增加时钟周期。
[0091] 需要补充说明的是,将计数器结果中的定点写入次数、浮点写入次数传入带宽判断器,通过运算判断定点运算和浮点运算总带宽是否大于实际节点带宽,如果是,则带宽判断器发出指令,时钟调节器响应,时钟周期以T周期为单位不断增加,如果否,带宽判断器不发出指令,时钟调节器不响应。
[0092] S2、将环形缓冲区中的运算指令传输至寄存器,并通过寄存器内的计数器记录每种类型运算指令的输出次数和输出时间,将输出次数和输出时间传输至带宽判断器进行二次带宽判断。
[0093] 具体的,将环形缓冲区中的运算指令传输至寄存器,并通过寄存器内的计数器记录每种类型运算指令的输出次数和输出时间,将输出次数和输出时间传输至带宽判断器进行二次带宽判断包括:
[0094] S21、从环形缓冲区中读取定点运算指令和浮点运算指令,并将定点运算指令和浮点运算指令传输至对应的寄存器。
[0095] 需要补充说明的是,定点运算指令、浮点运算指令缓存于环形缓冲区的速度大于从环形缓冲区中获取其数据的速度。
[0096] S22、利用寄存器中的计数器记录输出次数和输出时间,输出次数包括定点输出次数和浮点输出次数,输出时间包括定点输出时间和浮点输出时间。
[0097] S23、将记录的输出次数和输出时间反馈至带宽判断器,利用带宽判断器进行二次带宽判断。
[0098] 具体的,将记录的输出次数和输出时间反馈至带宽判断器,利用带宽判断器进行二次带宽判断包括:
[0099] S231、将记录的定点输出次数、浮点输出次数、定点输出时间及浮点输出时间反馈至带宽判断器;
[0100] S232、基于反馈结果,带宽判断器利用带宽公式计算得到输出总带宽;
[0101] S233、将计算得到的输出总带宽与节点带宽进行对比,进行二次带宽判断。
[0102] 具体的,将计算得到的输出总带宽与节点带宽进行对比,进行二次带宽判断包括:
[0103] 若输出总带宽小于等于节点带宽,则带宽判断器不发送调节指令至时钟调节器;
[0104] 若输出总带宽大于节点带宽,则带宽判断器发送指令至时钟调节器,并根据预设的周期增加时钟周期。
[0105] 需要补充说明的是,寄存器初始时钟周期很小,数据在寄存器中的延时时间可忽略不计。若时钟调节器运行,寄存器时钟周期以T周期不断增加,其延时也会逐步增加。
[0106] S3、处理器组件根据初次和二次带宽判断的结果,结合运算指令类型的比例,实时调整带宽分配策略,处理器组件包括数据处理器和带宽分配器。
[0107] 具体的,处理器组件根据初次和二次带宽判断的结果,结合运算指令类型的比例,实时调整带宽分配策略,处理器组件包括数据处理器和带宽分配器包括:
[0108] S31、将初次带宽判断结果和二次带宽判断结果从寄存器传输至数据处理器。
[0109] 需要补充说明的是,将寄存器中定点运算指令、浮点运算指令、定点输出次数、浮点输出次数传输至数据处理器。
[0110] S32、数据处理器接收并处理初次带宽判断结果和二次带宽判断结果中的定点运算指令和浮点运算指令,得到定点处理结果与浮点处理结果,并将定点处理结果与浮点处理结果传输至带宽分配器。
[0111] S33、带宽分配器根据接收到的定点处理结果与浮点处理结果的比例,调整带宽分配策略。
[0112] S4、基于调整后的带宽分配策略,将运算指令传输至相应的运算单元,执行相应的运算指令。
[0113] 需要补充说明的是,在每一组指令队列处理完成之后,各计数器清零,时钟调节器也复位,等待下一组指令队列。
[0114] 在一个具体的实施例中,指令队列用于保存指令的实时执行信息,一组指令队列等待运算。队列进入指令发射逻辑,指令发射逻辑用于选择指令并且发射到对应的运算流水线中。在每个时钟周期,指令发射逻辑从准备好的指令当中选择一条指令发射到对应的流水线执行,不同计算应用当中的定点运算指令和浮点运算指令的比例也不一样。
[0115] 如图2所示,设置了2个运算流水线,分别是定点运算流水线和浮点运算流水线。指令发射逻辑先判断指令队列当中每条指令的状态是否准备好,以及每个运算流水线是否能够接收并执行新的指令,若判断是则把指令队列当中的指令分配到对应流水线去执行。
[0116] 定点运算流水线的指令进入环形缓冲区1,浮点运算流水线的指令进入环形缓冲区2;在环形缓冲区1和环形缓冲区2写入数据处分别设置计数器counter1和计数器counter2,定点运算指令和浮点运算指令全部写入环形缓冲区,其计数结果分别为w1和w2,用时分别为t1和t2;计数器将计数结果w1和w2发送至带宽判断器,带宽判断器进行判断,其中本节点运算带宽为B。
[0117] 若w1/t1+w2/t2<=B,则带宽判断器判断为否,不发送指令,时钟调节器不运作;以下描述皆在此种条件下发生。
[0118] 定点运算指令和浮点运算指令分别从环形缓冲区1和环形缓冲区2读出,进入寄存器1和寄存器2;其中,环形缓冲区1和环形缓冲区2,寄存器1和寄存器2均为同种类型,将所述数据缓存于环形缓冲区的速度大于从所述环形缓冲区中获取该数据的速度,避免数据堵塞于环形缓冲区之内而加快数据传输效率;寄存器初始时钟周期T0很小,数据在寄存器内延时可忽略不计。
[0119] 在寄存器1和寄存器2输出位置设置计数器counter3和计数器counter4,定点运算指令和浮点运算指令全部从寄存器进入数据处理器,其计数结果分别为O1和O2,用时分别为t3和t4;O1和O2数据发送至数据处理器,处理数据结果为O1/t3,O2/t4;定点运算单元带宽和浮点运算单元带宽初始值均为B/2;将处理结果发送至带宽分配器,分配器以O1/t3:O2/t4的比例将带宽提前分配;定点运算指令和浮点运算指令分别进入定点运算单元和浮点运算单元,进行数据运算处理;在下一组指令队列达到之时,所有计数器置0,寄存器时钟周期重置为初始值,定点运算单元和浮点运算单元带宽也重置。
[0120] 若w1/t1+w2/t2>B,则带宽判断器判断为是,发送指令,时钟调节器响应,寄存器周期调整为T1,O1/(t3+T1)+O2/(t3+T1)<=B,可求得T1;以下描述皆在此种条件下发生。
[0121] 定点运算指令和浮点运算指令分别从环形缓冲区1和环形缓冲区2读出,进入寄存器1和寄存器2;此时,时钟调节器已处于响应状态,寄存器周期调整为T1,counter3和counter4输出O1和O2;同时,O1和O2数据发送至数据处理器,处理数据结果为O1/t3,O2/t4;将处理结果发送至带宽分配器,分配器以O1/t3:O2/t4的比例将带宽提前分配;定点运算指令和浮点运算指令进入定点运算单元和浮点运算单元,进行数据运算处理。
[0122] 此外,定点数,小数点不固定,如int,其小数点位于数的最后位,小数位数越多,数n的精度越高;若小数点后有n位,则精度为1/(2);整数位数越多,可表示的最大值越大。定点数的计算公式为:
[0123]
[0124] 式中,n表示十进制数;fc表示小数位长度;bw表示定点数位宽;i表示索引;Bi表示第i位的值。
[0125] 浮点数,小数点不固定的数,如float,double,浮点数与int,char这些无符号整数的表示逻辑完全不一致;浮点数不能移位,因为位处于不同的字段,有不同的意义,例如:
[0126]
[0127] 式中,V表示浮点数;S表示符号位,取值0或1,决定一个数字的符号,0表示正,1表0
示负;M表示尾数,用小数表示,例如1.234*10,1.234就是尾数;R表示基数,表示十进制数R‑1
就是10,表示二进制数R就是2;E表示指数,用整数表示,例如10 ,‑1即是指数。
[0128] 如果要在计算机中,用浮点数表示一个数字,只需要确认这几个变量即可。
[0129] 综上所述,借助于本发明的上述技术方案,通过采用环形缓冲区缓存数据,避免了频繁的内存分配操作,减少了内存管理的开销,提高了内存的利用效率和安全性;同时,环形缓冲器起到了数据缓冲暂存的作用,有效缓解了数据量过大导致的带宽不足问题,避免了数据积压和处理过慢的情况,提高了数据处理的流畅性和实时性。通过寄存器输出次数的比率实时调整定点运算和浮点运算所占用的带宽比重,充分利用了带宽资源,提高了带宽利用率;此外,通过环形缓冲器的写入次数判断当前指令所需的总带宽,确保在处理大量数据时,带宽可以合理分配,避免因带宽不足导致的数据溢出和运算效率低下问题。通过从时间和空间两个维度优化带宽分配,有效解决了数据流架构中带宽分配紧张导致的计算效率低下的问题,通过动态调整带宽分配策略,确保了系统的高效运行,避免了带宽资源的浪费;此外,实时优化的方法能够灵活应对不同的计算任务和数据流量,提高了系统的适应性和鲁棒性。
[0130] 以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。