一种有查询功能的存储器及其查询方法与流程

文档序号:11864271阅读:358来源:国知局
一种有查询功能的存储器及其查询方法与流程
本发明涉及集成电路
技术领域
,尤其涉及一种有查询功能的存储器及其查询方法。
背景技术
:现有技术中存储芯片为单一存储功能,通过计算机向存储器发出读取命令,计算机收到返回的数据后,由处理器对数据进行相应处理,针对大规模的数据存储时,一般采用多个存储器组成阵列的形式扩大存储规模,但是缺点就是查询速度不能够跟上存储规模的扩展速度。数据查询技术方面:硬件主要有存储系统和计算系统组成,依托数据库软件或hadoop等分布式系统基础架构实现数据查询。这种系统在PB级大数据条件下查询速度很慢,很难满足实时查询的要求。并且随着数据量的增长在未来EB级数据量甚至更高级别的数据量条件下将难以应对。在中国发明专利201310591511.0中公开了一种高速存储器,该高速存储器包括:充电电路,锂电池,低漏电储存电路和读/写控制电路;所述充电电路连接于电源与所述锂电池之间,用于为所述锂电池充电;当所述电源断开时,切断所述电池的漏电通路;所述读/写控制电路连接于电源和低漏电储存电路,当所述电源导通时,用于低漏电储存电路的读或写操作;所述锂电池,当所述电源断开时,用于为所述低漏电储存电路供电,所述低漏电储存电路保持存储信息。本对比文献中的方案虽然能够减小存储器的写操作时间,提高读取速度。但是对于大规模数据中,要实现对数据的查询,仍然只能对存储器内的数据逐个的读取,然后由处理器判断该数据是否满足查询条件,整个系统的查询速度很慢。技术实现要素:本发明要解决的技术问题在于针对现有技术中查询速度慢的缺陷,提供一种通过内嵌数据查询分析器,实现对数据进行快速、实时查询的有查询功能的存储器及其查询方法。本发明解决其技术问题所采用的技术方案是:本发明提供一种有查询功能的存储器,包括指令译码器、控制器、地址发生及译码器、存储器组和查询分析器组,其中:所述指令译码器,用于将接收到的指令进行指令译码,并产生控制信号;所述控制器,用于根据指令译码的结果,控制首地址的产生,地址的递增、递减、复位和保持;所述地址发生及译码器,用于产生查询使用的起始地址,并进行地址译码,得到地址信号;所述存储器组,包括多个相互并联的存储器;所述查询分析器组,包括与存储器一一对应的查询分析器,每个查询分析器通过指令总线从指令译码器获得控制信号,通过地址总线从地址发生及译码器获得地址信号,根据地址信号和控制信号,对其对应的存储器中的数据进行标记、查询、分类和读取操作,并通过数据输出总线输出查询结果。进一步地,本发明的所述查询分析器包括关系分析器、类型分析器和多个寄存器;类型分析器用于分析从存储器输出的数据类型,将数据输出到寄存器或关系分析器中,同时将类型分析结果输出给关系分析器;关系分析器用于根据指令中的立即数,与存储器输出的数据进行数据关系分析,并判断是否输出数据。进一步地,本发明的所述查询分析器还包括第一存储器,用于存储关系分析器根据控制指令对数据分析的结果。进一步地,本发明的所述寄存器包括第一寄存器、第二寄存器和寄存器堆;第一寄存器设置在第一存储器与关系分析器之间,用于寄存从第一存储器输出的数据;第二寄存器与关系分析器相连,用于寄存第一存储器中的数据是否存在有效数据;寄存器堆设置在类型分析器和关系分析器之间,用于存储集合数据。本发明提供一种有查询功能的存储器的查询方法,包括以下步骤:S1、指令译码器对指令进行指令译码,得到控制信号;S2、控制器依据控制信号控制地址发生及译码器产生首地址并进行地址译码,得到地址信号,存储器输出该地址处的数据;S3、查询分析器根据控制信号,对从存储器中输出的数据进行标记扫描、查询扫描、分类扫描和读取的操作;S4、通过数据输出总线对查询结果进行输出。进一步地,本发明的步骤S2中标记扫描的具体方法包括:步骤1、控制器控制地址发生器产生起始地址,读取存储器在该地址内的数据DataA={A1,A2},存储器的一个输出端输出数据DataA到类型分析器;步骤2、如果数据类型是数据,则将A2输出到关系分析器;如果数据类型是地址,则将A2作为地址输入到寄存器堆的地址输入端,寄存器堆输出该地址对应的数据C到关系分析器;步骤3、关系分析器分析A2或C与指令中的立即数B1的关系,判断二者之间的关系是否与指令中的关系码OP所指定的关系一致;步骤4、如果数据类型是集合地址,且关系一致,设置第二寄存器为有效,同时在当前地址对第一存储器写入有效信号;步骤5、如果数据类型是数据,且第二寄存器为有效,则在当前地址对第一存储器写入有效信号;步骤6、控制器使地址增1,继续执行步骤1-5的标记过程;步骤7、地址继续增1,直到增大到地址最大值;地址每增1,查询分析器执行一次标记过程。进一步地,本发明的步骤S2中查询扫描的具体方法包括:步骤1、控制器控制地址发生器产生地址,读取存储器在该地址内的数据DataA={A1,A2},在存储器的一个输出端输出数据到类型分析器;同时读取第一存储器内该地址的数据,输出到第二寄存器的输入端,第二寄存器会在下一个时钟边沿记录此数据,在时钟边沿到来之前第二寄存器仍然保持原值;步骤2、如果数据类型是数据,则将A2直接输出到关系分析器;如果数据类型是集合地址,则寄存器堆输出对应地址的数据C到关系分析器;步骤3、关系分析器分析A2或C与指令中的立即数B1的关系,判断二者之间的关系是否与指令中的关系码OP所指定的关系一致;步骤4、如果数据类型是数据,且关系一致,且第二寄存器为有效,则在当前地址处对第一存储器写入有效信号;步骤5、控制器使地址增1,查询分析器执行一次查询过程;步骤6、地址继续增1,直到增大到地址最大值;每增1,查询分析器执行一次查询过程。进一步地,本发明的步骤S2中分类扫描的具体方法包括:步骤1、设置第二寄存器为无效,控制器控制地址发生器产生地址最大值,读取第一存储器内该地址的数据;步骤2、如果数据类型为数据,且如果第二寄存器为无效则把存储器Ra值写入第二寄存器,如果第二寄存器为有效则保持第二寄存器原值;步骤3、如果数据类型为地址,则置第二寄存器为无效,同时读出A2到寄存器堆的地址输入端,A2为存储器在该地址内的数据DataA={A1,A2}的数据值,选通该地址对应的寄存器组,设置寄存器堆的值为B2,B2是指令中传递的立即数;步骤4、控制器使地址减1,查询分析器执行一次分类过程;步骤5、地址继续减1,直到减小到地址最小值;每减1,查询分析器执行一次分类过程。进一步地,本发明的步骤S2中进行读取的具体方法包括:步骤1、控制器获取控制指令,并执行标记扫描过程;步骤2、控制器控制地址发生器产生地址和片选信号;步骤3、查询分析器读取存储器在该地址内的数据,若寄存器输出标记位为有效,则输出该数据。本发明产生的有益效果是:本发明的有查询功能的存储器,通过在集成电路内部将存储器分成多组,每个存储器都设置有查询分析器,对该存储器内部的数据进行查询,大幅的提高了数据查询速度;该存储器通过在存储器内部增加数据查询的功能模块,查询用时不会随数据量的增加而增加,在大数据情况下能够显著的增加数据查询速度,不受硬件系统读写瓶颈对查询速度的影响。附图说明下面将结合附图及实施例对本发明作进一步说明,附图中:图1是本发明实施例的有查询功能的存储器的结构示意图;图2是本发明实施例的有查询功能的存储器的查询分析器的结构示意图;图3是本发明实施例的有查询功能的存储器的查询方法的流程图;图4是本发明实施例的有查询功能的存储器的去掉寄存器堆的查询分析器的结构示意图。具体实施方式为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。如图1所示,本发明实施例的有查询功能的存储器,包括指令译码器、控制器、地址发生及译码器、存储器组和查询分析器组,其中:指令译码器,用于将接收到的指令进行指令译码,并产生控制信号;控制器,用于根据指令译码的结果,控制首地址的产生,地址的递增、递减、复位和保持;地址发生及译码器,用于产生查询使用的起始地址,并进行地址译码,得到地址信号;存储器组,包括多个相互并联的存储器;查询分析器组,包括与存储器一一对应的查询分析器,每个查询分析器通过指令总线从指令译码器获得控制信号,通过地址总线从地址发生及译码器获得地址信号,根据地址信号和控制信号,对其对应的存储器中的数据进行标记、查询、分类和读取操作,并通过数据输出总线输出查询结果。如图2所示,查询分析器包括关系分析器、类型分析器和多个寄存器;类型分析器用于分析从存储器输出的数据类型,将数据输出到寄存器或关系分析器中,同时将类型分析结果输出给关系分析器;关系分析器用于根据指令中的立即数,与存储器输出的数据进行数据关系分析,并判断是否输出数据。查询分析器还包括第一存储器,用于存储关系分析器根据控制指令对数据分析的结果。寄存器包括第一寄存器、第二寄存器和寄存器堆;第一寄存器设置在第一存储器与关系分析器之间,用于寄存从第一存储器输出的数据;第二寄存器与关系分析器相连,用于寄存第一存储器中的数据是否存在有效数据;寄存器堆设置在类型分析器和关系分析器之间,用于存储集合数据。在本发明的另一个具体实施例中,存储器S为存储器组中一个存储器,寄存器堆为寄存器堆Rc,第一存储器为存储器Ra,第一寄存器为寄存器Rr,第二寄存器为寄存器Rin。指令包括:操作码OC、关系码OP、立即数B1和立即数B2。操作码OC经译码后得到控制信号CMD。控制信号CMD表示不同的操作,关系码OP表示关系分析器的8种比较关系,B1和B2是对存储器中数据进行比较的数值。各个模块的功能分别为:一、存储器S:功能:用于存储数据及数据类型。补充说明:一个存储器S的存储容量不限。容量为n*m位(n为存储器S内的字节数,m为字长。)示例:存储的一个字节DataA={A1数据类型,A2数据}。A1,A2的字长不限。例如A1字长可以是2位,3位等。A2字长可以是8位,16位等。DataA的字长等于A1字长加上A2字长。实例:DataA={10100111100}中A1=101字长为3位。A2=00111100字长为8位。DataA字长为11位;DataA={01010000000000111100}中,A1=0101字长为4;A2=0000000000111100字长为16位。DataA字长为20位。二、存储器Ra:功能:用于存储关系分析器依据当前指令对数据分析的结果。其结果记录在与存储器S当前地址指向的字节对应的存储单元中。三、寄存器Rr:功能:寄存从存储器Ra输出的数据。Rr值的更新是在一次查询分析结束时的时钟边沿。这意味着Rr中的值总是上一个地址中Ra的值。当地址为起始地址时。Rr为默认的值0。例如:如下表。当前地址为00101。Ra的输出为地址00101指向的Ra中的数据0。此时的Rr中的数据是地址00100指向的Ra中的数据1。地址RaA1A2001001101t001010101t001100101t四、寄存器Rin:功能:记录是否有Ra为有效。例如:在演示实例中,当执行分类指令时,地址从最大值递减,当某个地址处的Ra=1,且Rin=0时,置Rin=1。接着Rin的值不变,直到找到数据类型为集合地址的字节时Rin=0。五、类型分析器:功能:分析DataA中的A1是什么类型,并依据类型控制A2输出到寄存器堆Rc还是关系分析器。同时把类型分析结果输出给关系分析器。A1有8种类型:空、数据起始地址、集合地址、数据结束地址、数字、字符、外联、无关。其中空、数据起始地址、数据结束地址、外联、无关这五个类型是在外部设备中使用的与本电路无关。六、寄存器堆Rc功能:存储集合数据。即存储表示该数据记录属于哪个分类的数据。例如:在下面一条记录<Btitle=”CPU”author=”John”/>在字符<的前面有一个字节(地址为00000)存放集合地址例如下表所示:记录<Btitle=”CPU”author=”John”/>属于集合地址为00000000的后两位(具体几位取决于Rc集合地址的位数)即:00所指向的集合0001。即记录<Btitle=”CPU”author=”John”/>属于集合0001。如果00000000改为00000010则:记录<Btitle=”CPU”author=”John”/>属于集合0101。七、关系分析器;功能:1、依据指令CMD分析立即数B1与C或B1与A2之间的关系是否是op所描述的关系。2、依据指令CMD和当前Ra,Rr,Rin的值,并B1与C或A2的关系,控制写入Ra,Rin的值。3、控制是否将B2写入寄存器堆Rc。4、在数据读取指令时依据Ra的值决定是否输出数据。op描述的关系有八种:1、不比较;2、A>B;3、A==B;4、A>B或A==B;5、A<B;6、A<B或A>B;7、A<B或A==B;8、A<B或A==B或A>B。如图3所示,本发明实施例的有查询功能的存储器的查询方法,包括以下步骤:S1、指令译码器对指令进行指令译码,得到控制信号;S2、控制器依据控制信号控制地址发生及译码器产生首地址并进行地址译码,得到地址信号,存储器输出该地址处的数据;S3、查询分析器根据控制信号,对从存储器中输出的数据进行标记扫描、查询扫描、分类扫描和读取的操作;S4、通过数据输出总线对查询结果进行输出。步骤S2中标记扫描的具体方法包括:步骤1、控制器控制地址发生器产生起始地址,读取存储器在该地址内的数据DataA={A1,A2},存储器的一个输出端输出数据DataA到类型分析器;步骤2、如果数据类型是数据,则将A2输出到关系分析器;如果数据类型是地址,则将A2作为地址输入到寄存器堆的地址输入端,寄存器堆输出该地址对应的数据C到关系分析器;步骤3、关系分析器分析A2或C与指令中的立即数B1的关系,判断二者之间的关系是否与指令中的关系码OP所指定的关系一致;步骤4、如果数据类型是集合地址,且关系一致,设置第二寄存器为有效,同时在当前地址对第一存储器写入有效信号;步骤5、如果数据类型是数据,且第二寄存器为有效,则在当前地址对第一存储器写入有效信号;步骤6、控制器使地址增1,继续执行步骤1-5的标记过程;步骤7、地址继续增1,直到增大到地址最大值;地址每增1,查询分析器执行一次标记过程。步骤S2中查询扫描的具体方法包括:步骤1、控制器控制地址发生器产生地址,读取存储器在该地址内的数据DataA={A1,A2},在存储器的一个输出端输出数据到类型分析器;同时读取第一存储器内该地址的数据,输出到第二寄存器的输入端,第二寄存器会在下一个时钟边沿记录此数据,在时钟边沿到来之前第二寄存器仍然保持原值;步骤2、如果数据类型是数据,则将A2直接输出到关系分析器;如果数据类型是集合地址,则寄存器堆输出对应地址的数据C到关系分析器;步骤3、关系分析器分析A2或C与指令中的立即数B1的关系,判断二者之间的关系是否与指令中的关系码OP所指定的关系一致;步骤4、如果数据类型是数据,且关系一致,且第二寄存器为有效,则在当前地址处对第一存储器写入有效信号;步骤5、控制器使地址增1,查询分析器执行一次查询过程;步骤6、地址继续增1,直到增大到地址最大值;每增1,查询分析器执行一次查询过程。步骤S2中分类扫描的具体方法包括:步骤1、设置第二寄存器为无效,控制器控制地址发生器产生地址最大值,读取第一存储器内该地址的数据;步骤2、如果数据类型为数据,且如果第二寄存器为无效则把存储器Ra值写入第二寄存器,如果第二寄存器为有效则保持第二寄存器原值;步骤3、如果数据类型为地址,则置第二寄存器为无效,同时读出A2到寄存器堆的地址输入端,A2为存储器在该地址内的数据DataA={A1,A2}的数据值,选通该地址对应的寄存器组,设置寄存器堆的值为B2,B2是指令中传递的立即数;步骤4、控制器使地址减1,查询分析器执行一次分类过程;步骤5、地址继续减1,直到减小到地址最小值;每减1,查询分析器执行一次分类过程。步骤S2中进行读取的具体方法包括:步骤1、控制器获取控制指令,并执行标记扫描过程;步骤2、控制器控制地址发生器产生地址和片选信号;步骤3、查询分析器读取存储器在该地址内的数据,若寄存器输出标记位为有效,则输出该数据。在本发明的方法的另一个具体实施例中:存储器S为存储器组中一个存储器,寄存器堆为寄存器堆Rc,第一存储器为存储器Ra,第一寄存器为寄存器Rr,第二寄存器为寄存器Rin。1、由一个控制器,一个地址发生器,一个地址译码器,三个存储器(A0、A1、A2),三个查询分析器(E0、E1、E2)组成。2、采用逻辑1表示有效,逻辑0表示无效。3、每个存储器存储容量为16*11bit,存储器地址范围为0000~1111。4、DataA={A1,A2}。其中A1为3位,A2为8位,DataA为11位。用A1记录数据类型,A2记录数据值。5、数据类型编码,如下表:编码意义010集合地址101数据6、关系编码:7、存储器单个字节各数据位的意义与示例数据如下表:查询示例:在下面三条记录<Btitle=”CPU”author=”John”/><Btitle=”Face”author=”LP”/><Ctitle=”RED”owner=”Lee”/>中查找title=”CPU”的记录并输出。电路工作过程:【1】标记指令:执行标记指令0100001000000001;起始地址为00000。如果类型分析器判断S0_A1是集合地址,寄存器堆Rc输出该地址的数据并输出到关系分析器。关系分析器判断此值与B的关系,如果与指令中的待求关系一致,则Rin=1,写入Ra在该地址处数据为1;否则写入Ra在该地址处数据为0。如果类型分析器判断S0_A1是数据,且Rin=1,写入Ra在该地址处数据为1;否则写入Ra在该地址处数据为0。地址增1,执行上述过程。直到地址增到最大值。各存储器与寄存器变化如下表:【2】查询指令:执行查询指令:00100010001111001、地址发生器产生地址n=00000。2、输出数据类型为010是集合地址。Rr记录Ra的输出,此时Rr=1。置Ra[0]=0。3、Rr=1,S0_A2[1]=00111100与立即数00111100(表示字符“<”)的关系为010。置Ra[1]=1。4、Rr=1,S0_A2[1]=01000010与立即数00111100的关系不是010。置Ra[2]=0。5、与第四步相似,从Ra[2]到Ra[31]都被置为0。(00111100为字符“<”的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2000011101<1101<0101<按照【2】过程执行查询指令:0010001001000010(01000010为字符“B”的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2000101101B1101B0101C按照【2】过程执行查询指令:0010001000100000(00100000为空格的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2000111101空格1101空格0101空格【3】分类指令:执行分类指令0001001000000001000000111、地址发生器产生最大地址111112、从地址11111到地址00100都不满足Ra=1,且Rin=0条件,则Rin不变,Rin=0;3、当地址为00011时,满足Ra=1,且Rin=0条件,则Rin=1;4、地址自减,从地址00010到地址00001都不满足Ra=1,且Rin=0条件,所以Rin不变,Rin=1;当地址为00000时类型为集合地址,关系分析器分析把A2后两位值作为地址输出到Rc地址输入端。S0_Rc输出数据为0001,S1_Rc输出数据为0001,关系分析器E0、E1比较0001与立即数B2(B2=00000001)的后四位的关系是否为010,此处结果为是,则置Rc[00]=0011。【4】标记指令:执行标记指令0100001000000011;指令执行过程与【1】相同,但立即数为00000011。【5】查询指令执行查询指令0010001001110100(01110100为字符t的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2001001101t1101t0101t执行查询指令0010001001101001(01101001为字符i的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2001011101i1101i0101i执行查询指令0010001001110100(01110100为字符t的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2001101101t1101t0101t执行查询指令0010001001101100(01101100为字符l的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2001111101l1101l0101l执行查询指令0010001001100101(01100101为字符e的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2010001101e1101E0101e执行查询指令0010001000111101(00111101为字符=的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2010011101=1101=0101=执行查询指令0010001000100010(00100010为字符”的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A20100101101“1101“0101“执行查询指令0010001001000011(01000011为字符C的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2010111101C0101F0101R执行查询指令0010001001010000(01010000为字符P的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2011001101P0101a0101R执行查询指令0010001001010101(01010101为字符U的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2011011101U0101c0101R执行查询指令0010001000100010(00100010为字符“的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2011101101“0101E0101R【6】分类指令:执行分类指令000100100000001100000100;指令执行过程与【3】相同,但立即数为0000001100000100。【7】读取1、先执行标记指令0100001000000100。执行过程与【1】相同,但立即数为00000100。2、执行读取指令0000101000000100产生起始地址00000和片选信号。S0的Ra为1时,输出数据S0_A1,S0_A2到输出总线。Ra=0使输出为高阻态。随地址自增,数据依次被读出。如图4所示,在本发明的另一个实施例中,查询分析器中去掉了寄存器堆Rc。步骤S2中标记扫描的具体方法包括:步骤1、控制器控制地址发生器产生起始地址,读取存储器在该地址内的数据DataA={A1,A2},A1输出到类型分析器,A2输出到关系分析器;步骤2、关系分析器分析A2与指令中的立即数B1的关系,判断二者之间的关系是否与指令中的关系码OP所指定的关系一致;步骤3、如果数据类型是集合,且关系一致,设置第二寄存器为有效,同时在当前地址对第一存储器写入有效信号;步骤4、如果数据类型是数据,且第二寄存器为有效,则在当前地址对第一存储器写入有效信号;步骤5、控制器使地址增1,继续执行步骤1-4的标记过程;步骤6、地址继续增1,直到增大到地址最大值;地址每增1,查询分析器执行一次标记过程。步骤S2中查询扫描的具体方法包括:步骤1、控制器控制地址发生器产生地址,读取存储器在该地址内的数据DataA={A1,A2},A1输出到类型分析器,A2输出到关系分析器;同时读取第一存储器内该地址的数据,输出到第二寄存器的输入端,第二寄存器会在下一个时钟边沿记录此数据,在时钟边沿到来之前第二寄存器仍然保持原值;步骤2、关系分析器分析A2与指令中的立即数B1的关系,判断二者之间的关系是否与指令中的关系码OP所指定的关系一致;步骤3、如果数据类型是数据,且关系一致,且第二寄存器为有效,则在当前地址处对第一存储器写入有效信号;步骤4、控制器使地址增1,查询分析器执行一次查询过程;步骤5、地址继续增1,直到增大到地址最大值;每增1,查询分析器执行一次查询过程。步骤S2中分类扫描的具体方法包括:步骤1、设置第二寄存器为无效,控制器控制地址发生器产生地址最大值,读取第一存储器内该地址的数据;步骤2、如果数据类型为数据,且如果第二寄存器为无效则把存储器Ra值写入第二寄存器,如果第二寄存器为有效则保持第二寄存器原值;步骤3、如果数据类型为集合,则置第二寄存器为无效,设置存储器在当前地址处的值为B2,B2是指令中传递的立即数;步骤4、控制器使地址减1,查询分析器执行一次分类过程;步骤5、地址继续减1,直到减小到地址最小值;每减1,查询分析器执行一次分类过程。步骤S2中进行读取的具体方法包括:步骤1、控制器获取控制指令,并执行标记扫描过程;步骤2、控制器控制地址发生器产生地址和片选信号;步骤3、查询分析器读取存储器在该地址内的数据,若寄存器输出标记位为有效,则输出该数据。在这种实施方式中,对应的一个处理过程为:存储器S为存储器组中一个存储器,第一存储器为存储器Ra,第一寄存器为寄存器Rr,第二寄存器为寄存器Rin。1、由一个控制器,一个地址发生器,一个地址译码器,三个存储器(A0、A1、A2),三个查询分析器(E0、E1、E2)组成。2、采用逻辑1表示有效,逻辑0表示无效。3、每个存储器存储容量为16*11bit,存储器地址范围为0000~1111。4、DataA={A1,A2}。其中A1为3位,A2为8位,DataA为11位。用A1记录数据类型,A2记录数据值。5、数据类型编码,如下表:编码意义010集合101数据6、关系编码:7、存储器单个字节各数据位的意义与示例数据如下表:查询示例:在下面三条记录<Btitle=”CPU”author=”John”/><Btitle=”Face”author=”LP”/><Ctitle=”RED”owner=”Lee”/>中查找title=”CPU”的记录并输出。电路工作过程:【1】标记指令:执行标记指令0100001000000001;起始地址为00000。如果类型分析器判断S0_A1是集合,关系分析器判断此值与B的关系,如果与指令中的待求关系一致,则Rin=1,写入Ra在该地址处数据为1;否则写入Ra在该地址处数据为0。如果类型分析器判断S0_A1是数据,且Rin=1,写入Ra在该地址处数据为1;否则写入Ra在该地址处数据为0。地址增1,执行上述过程。直到地址增到最大值。各存储器与寄存器变化如下表:【2】查询指令:执行查询指令:00100010001111001、地址发生器产生地址n=00000。2、输出数据类型为010是集合。Rr记录Ra的输出,此时Rr=1。置Ra[0]=0。3、Rr=1,S0_A2[1]=00111100与立即数00111100(表示字符“<”)的关系为010。置Ra[1]=1。4、Rr=1,S0_A2[1]=01000010与立即数00111100的关系不是010。置Ra[2]=0。5、与第四步相似,从Ra[2]到Ra[31]都被置为0。(00111100为字符“<”的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2000011101<1101<0101<按照【2】过程执行查询指令:0010001001000010(01000010为字符“B”的ASCii码)其中Ra变化如下表。未列出的Ra都为0。按照【2】过程执行查询指令:0010001000100000(00100000为空格的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2000111101空格1101空格0101空格【3】分类指令:执行分类指令0001001000000001000000111、地址发生器产生最大地址111112、从地址11111到地址00100都不满足Ra=1,且Rin=0条件,则Rin不变,Rin=0;3、当地址为00011时,满足Ra=1,且Rin=0条件,则Rin=1;4、地址自减,从地址00010到地址00001都不满足Ra=1,且Rin=0条件,所以Rin不变,Rin=1;当地址为00000时类型为集合,关系分析器分析把A2后两位值与立即数B2(B2=00000001)的后两位的关系是否为010,此处结果为是,则置A2=11。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A200000101011101011001000【4】标记指令:执行标记指令0100001000000011;指令执行过程与【1】相同,但立即数为00000011。【5】查询指令执行查询指令0010001001110100(01110100为字符t的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2001001101t1101t0101t执行查询指令0010001001101001(01101001为字符i的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2001011101i1101i0101i执行查询指令0010001001110100(01110100为字符t的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2001101101t1101t0101t执行查询指令0010001001101100(01101100为字符l的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2001111101l1101l0101l执行查询指令0010001001100101(01100101为字符e的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2010001101e1101E0101e执行查询指令0010001000111101(00111101为字符=的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2010011101=1101=0101=执行查询指令0010001000100010(00100010为字符”的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A20100101101“1101“0101“执行查询指令0010001001000011(01000011为字符C的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2010111101C0101F0101R执行查询指令0010001001010000(01010000为字符P的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2011001101P0101a0101R执行查询指令0010001001010101(01010101为字符U的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2011011101U0101c0101R执行查询指令0010001000100010(00100010为字符“的ASCii码)其中Ra变化如下表。未列出的Ra都为0。地址S0_RaS0_A1S0_A2S1_RaS1_A1S1_A2S2_RaS2_A1S2_A2011101101“0101E0101R【6】分类指令:执行分类指令000100100000001100000001;指令执行过程与【3】相同,但立即数为0000001100000001。【7】读取1、先执行标记指令0100001000000100。执行过程与【1】相同,但立即数为00000100。2、执行读取指令0000101000000001产生起始地址00000和片选信号。S0的Ra为1时,输出数据S0_A1,S0_A2到输出总线。Ra=0使输出为高阻态。随地址自增,数据依次被读出。应当理解的是,对本领域普通技术人员来说,可以根据上述说明加以改进或变换,而所有这些改进和变换都应属于本发明所附权利要求的保护范围。当前第1页1 2 3 
当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1