CN111324382A - 指令处理方法和芯片 - Google Patents
指令处理方法和芯片 Download PDFInfo
- Publication number
- CN111324382A CN111324382A CN201811526986.0A CN201811526986A CN111324382A CN 111324382 A CN111324382 A CN 111324382A CN 201811526986 A CN201811526986 A CN 201811526986A CN 111324382 A CN111324382 A CN 111324382A
- Authority
- CN
- China
- Prior art keywords
- search
- unit
- data
- field
- lookup
- 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.)
- Granted
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 12
- 238000012545 processing Methods 0.000 claims abstract description 139
- 238000000034 method Methods 0.000 claims abstract description 68
- 230000000977 initiatory effect Effects 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 18
- 238000013461 design Methods 0.000 description 15
- 238000004891 communication Methods 0.000 description 11
- 239000000284 extract Substances 0.000 description 5
- 238000004590 computer program Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000010295 mobile communication Methods 0.000 description 3
- 238000011161 development Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 235000019800 disodium phosphate Nutrition 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000009191 jumping Effects 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30145—Instruction analysis, e.g. decoding, instruction word fields
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C15/00—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores
- G11C15/04—Digital stores in which information comprising one or more characteristic parts is written into the store and in which information is read-out by searching for one or more of these characteristic parts, i.e. associative or content-addressed stores using semiconductor elements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3004—Arrangements for executing specific machine instructions to perform operations on memory
- G06F9/30047—Prefetch instructions; cache control instructions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/3005—Arrangements for executing specific machine instructions to perform operations for flow control
- G06F9/30061—Multi-way branch instructions, e.g. CASE
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/34—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes
- G06F9/345—Addressing or accessing the instruction operand or the result ; Formation of operand address; Addressing modes of multiple operands or results
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3802—Instruction prefetching
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/38—Concurrent instruction execution, e.g. pipeline or look ahead
- G06F9/3836—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution
- G06F9/3851—Instruction issuing, e.g. dynamic instruction scheduling or out of order instruction execution from multiple instruction streams, e.g. multistreaming
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
- H04L45/74591—Address table lookup; Address filtering using content-addressable memories [CAM]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Advance Control (AREA)
- Devices For Executing Special Programs (AREA)
- Executing Machine-Instructions (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供一种指令处理方法和芯片,其中,该方法应用于芯片,芯片包括线程单元和查找引擎单元,该方法包括:线程单元向查找引擎单元发送查找指令,查找指令包括数据地址和第一查找字段,线程单元从RUN状态切换到WAIT状态;线程单元接收查找引擎单元发送的数据和程序指针,线程单元从WAIT状态切换到RUN状态。由于线程单元只需要发起一次查找指令,就可以获取到线程单元所需要的数据和程序指针,从而线程单元只进行了一次RUN状态到WAIT状态的切换;减少了线程单元切换到WAIT状态的次数,加快线程单元的指令处理过程,加快芯片的核的运行效率和芯片的运行效率。
Description
技术领域
本申请涉及通信技术,尤其涉及一种指令处理方法和芯片。
背景技术
随着通信技术的不断发展,多核多线程的网络处理器(network processor,NP)已经广泛的应用到了通信设备中,其中,网络处理器也可以称为芯片。芯片中具有线程单元、查找引擎单元、内存单元和三态内容寻址存储器(ternary content addressable memory,TCAM)单元。
现有技术中,芯片中的线程单元在处理指令的过程中,线程单元向查找引擎单元发送查找指令,其中,查找指令中包括了数据的具体地址,此时,线程单元会从运行(RUN)状态进入到等待(WAIT)状态;查找引擎单元从内存单元中查找到数据的具体地址所指示的数据,其中,数据中包括多个字段;然后,查找引擎单元将获取到的数据返回给线程单元,此时,线程单元从WAIT状态进入到RUN状态;接着,线程单元向TCAM单元发送进行分支查找的关键字(key),此时,线程单元又从RUN状态进入到WAIT状态;TCAM单元将确定出的key对应的程序指针返回给线程单元,此时,线程单元再WAIT状态进入到RUN状态。
然而现有技术中,在上述过程中,芯片中的线程单元进行了两次状态切换过程,每一次状态切换过程RUN状态与WAIT状态之间的切换;从而线程单元的指令处理过程,会因为线程单元进入到WAIT状态而两次被打断,而线程单元再次进入到RUN状态的时候,线程单元需要重复执行已经执行过的步骤,进而会导致线程单元的指令处理过程较慢,导致芯片的核的运行效率比较低,进一步的导致芯片的运行效率较低。
发明内容
本申请提供一种指令处理方法和芯片,以解决芯片的运行效率较低的问题。
第一方面,本申请提供一种指令处理方法,应用于芯片,所述芯片包括线程单元和查找引擎单元,包括:
所述线程单元向所述查找引擎单元发送查找指令,其中,所述查找指令包括数据地址和第一查找字段;
所述查找引擎单元根据所述查找指令,确定所述数据地址所指示的数据和所述第一查找字段所指示的程序指针;
所述查找引擎单元将所述数据和所述程序指针,发送给所述线程单元。
通过芯片的线程单元向芯片的查找引擎单元发送查找指令,其中,查找指令包括数据地址和第一查找字段,然后,线程单元从RUN状态切换到WAIT状态;查找引擎单元根据查找指令,确定数据地址所指示的数据和第一查找字段所指示的程序指针;线程单元接收查找引擎单元发送的数据和程序指针,然后,线程单元从WAIT状态切换到RUN状态。在以上过程中,由于线程单元只需要发起一次查找指令,就可以获取到线程单元所需要的数据和程序指针,从而线程单元只进行了一次RUN状态到WAIT状态的切换,减少了线程单元切换到WAIT状态的次数,从而可以加快线程单元的指令处理过程,加快芯片的核的运行效率和芯片的运行效率。
在一种可能的设计中,所述芯片还包括三态内容寻址存储器TCAM单元,所述TCAM单元设置在所述查找引擎单元中;所述查找引擎单元根据所述查找指令,确定所述数据地址所指示的数据和所述第一查找字段所指示的程序指针,包括:
所述查找引擎单元根据所述数据地址,确定所述数据;
所述查找引擎单元根据所述数据和所述第一查找字段,确定查找关键字;
所述查找引擎单元向所述TCAM单元发送所述查找关键字和所述数据;
所述TCAM单元根据所述查找关键字确定所述程序指针。
在一种可能的设计中,所述芯片还包括三态内容寻址存储器TCAM单元,所述TCAM单元与所述查找引擎单元连接;所述查找引擎单元根据所述查找指令,确定所述数据地址所指示的数据和所述第一查找字段所指示的程序指针,包括:
所述查找引擎单元根据所述数据地址,确定所述数据;
所述查找引擎单元根据所述数据和所述第一查找字段,确定查找关键字;
所述查找引擎单元向所述TCAM单元发送所述查找关键字;
所述TCAM单元根据所述查找关键字确定所述程序指针,并将所述程序指针发送给所述查找引擎单元。
在一种可能的设计中,所述芯片还包括内存单元,所述查找引擎单元根据所述数据地址,确定所述数据,包括:
所述查找引擎单元向所述内存单元发送所述数据地址;
所述内存单元根据所述数据地址,确定所述数据地址所指示的数据,并将所述数据地址所指示的数据发送给所述查找引擎单元。
在一种可能的设计中,所述查找指令中还包括查找标识,所述查找标识用于标识第二查找字段;所述查找引擎单元根据所述数据和所述第一查找字段,确定查找关键字,包括:
所述查找引擎单元根据所述查找标识,确定所述数据中的所述第二查找字段;
所述查找引擎单元根据所述第一查找字段和所述第二查找字段,生成所述查找关键字。
在一种可能的设计中,所述查找关键字中包括所述第一查找字段、所述第一查找字段的优先级、所述第二查找字段以及所述第二查找字段的优先级。
在一种可能的设计中,在所述线程单元向所述查找引擎单元发送查找指令之前,还包括:
所述线程单元获取报文,并根据所述报文中的任意字段生成所述第一查找字段。
在一种可能的设计中,所述任意字段为所述数据的目的地址。
在一种可能的设计中,在所述线程单元向所述查找引擎单元发送查找指令之前,还包括:
所述线程单元获取报文,并根据所述报文生成所述第一查找字段。
第二方面,本申请提供一种芯片,所述芯片包括:线程单元和查找引擎单元,其中,所述线程单元与所述查找引擎单元连接;
所述线程单元,用于向所述查找引擎单元发送查找指令,其中,所述查找指令包括数据地址和第一查找字段;
所述查找引擎单元,用于根据所述查找指令,确定所述数据地址所指示的数据和所述第一查找字段所指示的程序指针;将所述数据和所述程序指针,发送给所述线程单元。
通过提供一种芯片,芯片包括线程单元和查找引擎单元;线程单元向查找引擎单元发送查找指令,其中,查找指令包括数据地址和第一查找字段,然后,线程单元从RUN状态切换到WAIT状态;查找引擎单元根据查找指令,确定数据地址所指示的数据和第一查找字段所指示的程序指针;线程单元接收查找引擎单元发送的数据和程序指针,然后,线程单元从WAIT状态切换到RUN状态。在以上过程中,由于线程单元只需要发起一次查找指令,就可以获取到线程单元所需要的数据和程序指针,从而线程单元只进行了一次RUN状态到WAIT状态的切换,减少了线程单元切换到WAIT状态的次数,从而可以加快线程单元的指令处理过程,加快芯片的核的运行效率和芯片的运行效率。
在一种可能的设计中,所述芯片还包括三态内容寻址存储器TCAM单元,所述TCAM单元设置在所述查找引擎单元中;
所述查找引擎单元包括请求处理模块和结果处理模块,所述请求处理模块与所述结果处理模块连接;所述TCAM单元包括接收模块、确定模块和发送模块,所述接收模块、所述发送模块分别与所述确定模块连接;
所述请求处理模块,用于根据所述数据地址,确定所述数据;
所述结果处理模块,用于获取所述数据,并根据所述数据和所述第一查找字段,确定查找关键字;
所述接收模块,用于接收所述结果处理模块发送的所述查找关键字和所述数据;
所述确定模块,用于根据所述查找关键字确定所述程序指针;
所述发送模块,用于将所述数据和所述程序指针,发送给所述线程单元。
在一种可能的设计中,所述芯片还包括三态内容寻址存储器TCAM单元,所述TCAM单元与所述查找引擎单元连接;
所述查找引擎单元包括请求处理模块和结果处理模块,所述请求处理模块与所述结果处理模块连接;所述TCAM单元包括接收模块、确定模块和发送模块,所述接收模块、所述发送模块分别与所述确定模块连接;
所述请求处理模块,用于根据所述数据地址,确定所述数据;
所述结果处理模块,用于获取所述数据,并根据所述数据和所述第一查找字段,确定查找关键字;
所述接收模块,用于接收所述结果处理模块发送的所述查找关键字;
所述确定模块,用于根据所述查找关键字确定所述程序指针;
所述发送模块,用于将所述程序指针发送给所述结果处理模块;
所述结果处理模块,还用于将所述数据和所述程序指针,发送给所述线程单元。
在一种可能的设计中,所述芯片还包括内存单元,所述内存单元分别与所述请求处理模块、所述结果处理模块连接;
所述请求处理模块,用于向所述内存单元发送所述数据地址;
所述内存单元,用于根据所述数据地址,确定所述数据地址所指示的数据,并将所述数据地址所指示的数据发送给所述结果处理模块。
在一种可能的设计中,所述查找指令中还包括查找标识,所述查找标识用于标识第二查找字段;所述结果处理模块,具体用于:
根据所述查找标识,确定所述数据中的所述第二查找字段;
根据所述第一查找字段和所述第二查找字段,生成所述查找关键字。
在一种可能的设计中,所述查找关键字中包括所述第一查找字段、所述第一查找字段的优先级、所述第二查找字段以及所述第二查找字段的优先级。
在一种可能的设计中,所述线程单元,还用于:
在向所述查找引擎单元发送查找指令之前获取报文,并根据所述报文中的任意字段生成所述第一查找字段。
在一种可能的设计中,所述任意字段为所述数据的目的地址。
第三方面,本申请提供一种指令处理设备,包括用于执行以上第一方面的任一方法的至少一个芯片。
第四方面,本申请提供一种计算机存储介质,所述计算机存储介质包括指令,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
第五方面,本申请提供一种包括指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面所述的方法。
附图说明
图1为本申请实施例提供的一种路由器的结构示意图;
图2为本申请实施例提供的一种芯片的结构示意图;
图3为本申请实施例提供的另一种芯片的结构示意图;
图4为本申请实施例提供的一种指令处理方法的流程示意图;
图5为本申请实施例提供的另一种指令处理方法的流程示意图;
图6为本申请实施例提供的查找指令的格式的示意图;
图7为本申请实施例提供的分支查找指令的格式的示意图;
图8为本申请实施例提供的一种芯片的示意性框图;
图9为本申请实施例提供的一种芯片的示意性框图;
图10为本申请实施例提供的另一种芯片的示意性框图;
图11为本申请实施例提供的一种指令处理设备的示意性框图。
具体实施方式
本申请实施例可以应用于芯片中、或者可以执行本申请实施例的任意设备中,以下对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。需要说明的是,当本申请实施例的方案应用于芯片中、或者可以执行本申请实施例的任意设备中时,各个单元、模块名称可能发生变化,但这并不影响本申请实施例方案的实施。
应理解,本申请实施例的技术方案提供的芯片,可以应用到各类通信***中。通信***例如可以是:无线局域网通信(wireless local area network,WLAN)***,全球移动通信(global system of mobile communication,GSM)***、码分多址(code divisionmultiple access,CDMA)***、宽带码分多址(wideband code division multipleaccess,WCDMA)***、通用分组无线业务(general packet radio service,GPRS)、长期演进(long term evolution,LTE)***、LTE频分双工(frequency division duplex,FDD)***、LTE时分双工(time division duplex,TDD)、通用移动通信***(universal mobiletelecommunication system,UMTS)、全球互联微波接入(worldwide interoperabilityfor microwave access,WiMAX)通信***、以及未来的第五代移动通信技术(the 5thGeneration mobile communication technology,5G)***或未来可能出现的其他***。
本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。以下对本申请中的部分用语进行解释说明,以便于本领域技术人员理解。
1)核(Core):一个网络处理器(network processor,NP)可以有多个核;多个核可以并行的执行各自的指令。
2)线程(Thread):一个核可以被配置有多个线程,同一时间一个核内只能有一个线程在执行指令,即同一时间一个核内只能有一个线程在运行(RUN)状态。
3)程序指针(program counter,PC):也称作程序计数器,用于指示计算机在其指令序列中的位置。
4)TCAM:主要用于快速查找程序指针。
5)“多个”是指两个或两个以上,其它量词与之类似。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
6)“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
需要指出的是,本申请实施例中涉及的名词或术语可以相互参考,不再赘述。
多核多线程的芯片是网络设备的重要器件,尤其的,多核多线程的芯片是数据通信设备转发平面的核心器件。随着芯片的发展,芯片的数据吞吐量越来越大,例如,芯片的数据吞吐量从100千兆位/秒(gigabit per second,Gbps)增长到1兆兆位/秒(terabitsper second,Tbps),可知,芯片的吞吐量增加了10倍;随着芯片的数据吞吐量越来越大,为了保证线程处理的性能,需要增加芯片的核的数量;但是芯片的核的数量增加,会造成芯片的面积、功耗等较高。如果可以提高核处理报文时的效率,可以减少处理核的数量。
一个芯片中具有多个核,多个核可以并行的执行各自的指令;一个核可以具有多个线程。核在处理线程的时候,是依次执行每一个指令。
一般情况下,一条指令的执行过程分为多个阶段,例如分为以下6个阶段:指令给进(Instruction Feed)阶段、指令译码(Instruction Decode)阶段、读取寄存器(ResisterRead)阶段、数据选择(Data Select)阶段、执行(Execute)阶段、回写(Write Back)阶段;每一个阶段的执行需要1个时钟周期。线程在取指令的时候,会顺序的取多条地址连续的指令,例如读取4条连续的指令,然后,线程对指令进行流水线式的处理。
线程在处理指令的过程中,会出现以下几种状态:
暂停(HALT)状态:在线程启动时,线程默认为HALT状态,芯片可以把线程从HALT状态切换到运行(RUN)状态。
RUN状态:当线程执行指令的时候,线程处于RUN状态。当出现以下情况时,线程从RUN状态到等待(WAIT)状态:第一种情况,线程执行了跳转指令,此时线程会自动跳转到WAIT状态,当跳转到目的程序指针之后线程再回到RUN状态;第二种情况,线程发起了访问内存的指令、或者TCAM访问等待结果返回,此时线程会进入WAIT状态,然后当结果返回以后线程再回到RUN状态。
WAIT状态:当线程等待内存访问结果返回、或者线程等待目的程序指针的时候,线程处于WAIT状态。
等待新报文进入(WAIT_NPKT)状态:当线程等待新报文的时候,线程处于WAIT_NPKT状态;当线程处理完一个报文之后,线程会从RUN状态进入到WAIT_NPKT状态。
当需要进行跳转指令、或者访问内存、或者进行TCAM查找的时候,会导致线程需要等待,即线程从RUN状态变化到其他状态,此时指令流水线被打断;然后,当线程恢复运行状态的时候,线程需要重新取指令,进而导致线程的指令处理过程被减慢。当指令流水线被打断的次数越多的时候,指令的执行效率会越低;进一步的导致芯片的运行效率降低。
芯片中包括4个电路单元:线程单元、TCAM单元、查找引擎单元和内存单元;其中,内存单元包括芯片内的内存和芯片外的内存,例如,芯片外的内存为内存条。
线程单元在处理指令的过程中,线程单元向查找引擎单元发送查找指令,其中,查找指令中包括了数据的具体地址,此时,线程单元会从RUN状态进入到WAIT状态;查找引擎单元从内存单元中查找到数据的具体地址所指示的数据,其中,数据中包括多个字段;然后,查找引擎单元将获取到的数据返回给线程单元,此时,线程单元从WAIT状态进入到RUN状态;可知,查找引擎单元完成内存单元和线程单元之间的接口转换,查找引擎单元实际就是一个通路;接着,线程单元向TCAM单元发送进行分支查找的key,此时,线程单元又从RUN状态进入到WAIT状态;TCAM单元将确定出的key对应的程序指针返回给线程单元,此时,线程单元再WAIT状态进入到RUN状态。
举例来说,线程单元从报文的报文头中提取出目的网络协议(internetprotocol,IP)地址,然后将目的IP地址赋值给字段D,此时,线程单元为RUN状态。线程单元向查找引擎单元发送查找指令,其中,查找指令中包括了数据的具体地址,查找指令用于指示查找table1,其中,table1的索引值index=2;此时,由于,线程单元需要等待查找引擎单元返回table1,而等待结果的返回是有延迟,从而线程单元会从RUN状态进入到WAIT状态。查找引擎单元从内存单元中查找到数据的具体地址所指示的table1,其中,table1中包括字段A、字段B和字段C;查找引擎单元将table1返回给线程单元,此时,线程单元从WAIT状态进入到RUN状态。接着,线程单元向TCAM单元发送一个switch-case指令,该switch-case指令中包括进行分支查找的key;此时,由于TCAM单元需要根据A、B、C、D这些字段得到对应的程序指针,TCAM单元的查找也有延迟,从而线程单元又从RUN状态进入到WAIT状态。TCAM单元可以确定字段A对应的程序指针为PC1、字段B对应的程序指针为PC2、字段C对应的程序指针为PC3、字段D对应的程序指针为PC4,进而TCAM单元根据以上内容确定出key对应的程序指针;然后,TCAM单元将确定出的key对应的程序指针返回给线程单元,此时,线程单元再WAIT状态进入到RUN状态。根据以上举例可知,线程单元完成了两次从RUN状态到WAIT状态的切换;线程单元被打断,线程单元又进入RUN状态的时候,线程单元需要重复获取一些指令,所以需要线程单元重复执行一些已经执行过的步骤,从而会导致芯片的核的运行效率比较低。
下面将结合附图,对本申请实施例的技术方案进行描述。
本申请提供的方法可以应用到芯片中、或者应用到处理器中、或者应用到中央处理器中,本申请对此不做限制。例如,当本申请提供的方法应用到芯片中的时候,芯片可以完成数据查找和分支查找。再例如,当本申请提供的芯片应用到其他的数据通信设备的时候,数据通信设备中的转发引擎ASIC(application specific integrated circuit,ASIC)也可以利用本申请提供的方法完成数据查找和分支查找。
本申请提供的芯片可以应用到路由器中、或者应用到终端中、或者应用到服务器中,本申请对此不做限制。例如,当本申请提供的芯片应用到路由器中的时候,芯片可以作为路由器的转发平面,进而芯片负责数据报文的快速转发处理。
图1为本申请实施例提供的一种路由器的结构示意图。如图1所示的路由器,路由器包括网络处理器01、媒体介入控制层(media access control,MAC)单元02、中央处理器(central processing unit,CPU)03和流量管理器(traffic manager,TM)04;其中,网络处理器为本申请涉及的芯片。其中,MAC单元02、CPU03、TM04分别与网络处理器01连接。
图2为本申请实施例提供的一种芯片的结构示意图,图3为本申请实施例提供的另一种芯片的结构示意图,如图2和图3所示,芯片主要包括线程单元05、查找引擎单元06、TCAM单元07和内存单元08。如图2所示,线程单元05与查找引擎单元06连接,查找引擎单元06与内存单元08连接,内存单元08设置在TCAM单元07中;或者,图3所示,线程单元05与查找引擎单元06连接,查找引擎单元06与内存单元08连接,查找引擎单元06与TCAM单元07连接。其中,查找引擎单元06可以是一种智能查找引擎。
图4为本申请实施例提供的一种指令处理方法的流程示意图。该方法应用于芯片,芯片包括线程单元和查找引擎单元。如图4所示,该方法包括:
101、线程单元向查找引擎单元发送查找指令,其中,查找指令包括数据地址和第一查找字段。
示例性的,芯片的线程单元生成一个查找指令,其中,查找指令中包括数据地址和第一查找字段,数据地址可以指示出线程单元需要查找的数据,第一查找字段用于指示出线程单元需要获取的程序指针;然后,线程单元将查找指令发送给查找引擎单元。此时,此线程单元从RUN状态进入到WAIT状态。
102、查找引擎单元根据查找指令,确定数据地址所指示的数据和第一查找字段所指示的程序指针。
示例性的,查找引擎单元接收到线程单元发送的查找指令,然后,查找引擎单元可以确定出数据地址所指示的数据,并且,查找引擎单元可以确定出第一查找字段所指示的程序指针。
103、查找引擎单元将数据和程序指针,发送给线程单元。
示例性的,查找引擎单元将查找到的数据和程序指针,发送给线程单元。线程单元接收到查找引擎单元返回的数据和程序指针之后,此线程单元从WAIT状态进入到RUN状态。
本实施例,通过芯片的线程单元向芯片的查找引擎单元发送查找指令,其中,查找指令包括数据地址和第一查找字段,然后,线程单元从RUN状态切换到WAIT状态;查找引擎单元根据查找指令,确定数据地址所指示的数据和第一查找字段所指示的程序指针;线程单元接收查找引擎单元发送的数据和程序指针,然后,线程单元从WAIT状态切换到RUN状态。在以上过程中,由于线程单元只需要发起一次查找指令,就可以获取到线程单元所需要的数据和程序指针,从而线程单元只进行了一次RUN状态到WAIT状态的切换,减少了线程单元切换到WAIT状态的次数,从而可以加快线程单元的指令处理过程,加快芯片的核的运行效率和芯片的运行效率。
图5为本申请实施例提供的另一种指令处理方法的流程示意图。该方法应用于芯片,芯片包括线程单元、查找引擎单元、TCAM单元和内存单元。如图5所示,该方法包括:
201、线程单元获取报文。
示例性的,线程单元获取报文,例如,中央处理器将报文发送给芯片的线程单元。其中,待处理报文中包括数据的目的地址。
202、线程单元根据报文中的任意字段,生成第一查找字段。
示例性的,线程单元依据报文中的任意字段,生成一个第一查找字段。可选的,线程单元依据报文中的数据的目的地址,生成第一查找字段。
举例来说,中央处理器将报文发送给线程单元;线程单元从报文的报文头中提取出目的IP地址,然后,线程单元将目的IP地址赋值给一个字段。
203、线程单元向查找引擎单元发送查找指令,其中,查找指令包括数据地址和第一查找字段。
可选的,查找指令中还包括查找标识,查找标识用于标识第二查找字段;
示例性的,线程单元根据待查找的数据的数据地址和第一查找字段,生成一个查找指令;然后,线程单元将查找指令发送给芯片的查找引擎单元。
可选的,线程单元预先被配置了查找标识(profile id),查找标识用于标识第二查找字段;从而,线程单元将数据地址、第一查找字段和查找标识都放到查找指令中。
204、查找引擎单元根据数据地址,确定数据地址所指示的数据。
可选的,步骤204具体包括:
2041、查找引擎单元向内存单元发送数据地址。
2042、内存单元根据数据地址,确定数据地址所指示的数据,并将数据地址所指示的数据发送给查找引擎单元。
示例性的,查找引擎单元首先需要确定出数据地址所指示的数据。具体来说,查找引擎单元包括请求处理模块和结果处理模块;查找引擎单元的请求处理模块将数据地址,发送给芯片的内存单元,并且,请求处理模块将第一查找字段和查找标识发送给查找引擎单元的结果处理模块;内存单元确定出数据地址所指示的数据,然后,内存单元将数据地址所指示的数据发送给查找引擎单元的结果处理模块。
205、查找引擎单元根据数据和第一查找字段,确定查找关键字。
可选的,步骤205具体包括:
2051、查找引擎单元根据查找标识,确定数据中的第二查找字段。
2052、查找引擎单元根据第一查找字段和第二查找字段,生成查找关键字。
可选的,查找关键字中包括第一查找字段、第一查找字段的优先级、第二查找字段以及第二查找字段的优先级。
示例性的,查找引擎单元需要生成用于查找程序指针的关键字。具体来说,由于请求处理模块将第一查找字段和查找标识发送给查找引擎单元的结果处理模块,并且,结果处理模块接收到了内存单元返回的数据,其中,数据中具有多个字段;可知,内存单元返回的数据中的字段有很多个,但是由于TCAM单元进行分支查找的字段可能只是其中的一个或者几个,结果处理模块需要确定出这些需要保留的字段;从而结果处理模块可以根据查找标识,确定出需要保留的字段,进而去除掉不需要保留的字段,此时,结果处理模块确定出查找标识所指示出的第二查找字段,第二查找字段为需要保留的字段;然后,结果处理模块根据第一查找字段和第二查找字段,生成查找关键字;进而;结果处理模块得到进行分支查找的字段;并且,每一个查找字段具有一个对应的优先级。
206、查找引擎单元向TCAM单元发送查找关键字。
示例性的,如图2所示,将TCAM单元设置在了查找引擎单元中,查找引擎单元的结果处理模块将查找关键字和数据,一起发送给TCAM单元。
或者,在本实施例中,如图3所示,TCAM单元复用了现有技术中的TCAM单元,查找引擎单元与TCAM单元连接,查找引擎单元的结果处理模块将查找关键字,发送给TCAM单元。
207、TCAM单元根据查找关键字确定程序指针。
示例性的,TCAM单元的编译器下发具体TCAM表项,编译器解析微码程序得到查找关键字对应的具体的PC,即向TCAM单元中输入是key,TCAM单元输出是PC。
在本实施例中,如图2所示,将TCAM单元设置在了查找引擎单元中,从而在查找引擎单元的结果处理模块将查找关键字发送给TCAM单元之后,TCAM单元可以确定出程序指针,进而查找引擎单元确定出程序指针。
或者,在本实施例中,如图3所示,TCAM单元复用了现有技术中的TCAM单元,查找引擎单元与TCAM单元连接,从而,查找引擎单元的结果处理模块将查找关键字发送给TCAM单元之后,TCAM单元可以确定出程序指针;然后,TCAM单元将程序指针发送给查找引擎单元的结果处理模块。
举例来说,TCAM单元可以执行以下代码:Switch{case(A==条件A),PC1:执行代码1;case(B==条件B),PC2:执行代码2;case(C==条件C),PC3:执行代码3;case(D==条件D),PC4:执行代码4;}。其中,条件A对应的程序指针为PC1,对应执行代码1;条件B对应的程序指针为PC2,对应执行代码2;条件C对应的程序指针为PC3,对应执行代码3;条件D对应的程序指针为PC4,对应执行代码4。可知,条件A为key的TCAM内容是PC1,条件B为key的TCAM内容是PC2,条件C为key的TCAM内容是PC3,条件D为key的TCAM内容是PC4。如果内存单元查找返回的数据中的内容的值正好是条件B,TCAM单元确定出的程序指针是PC2。
208、查找引擎单元将数据和程序指针,发送给线程单元。
示例性的,图2所示,将TCAM单元设置在了查找引擎单元中,查找引擎单元的结果处理模块接收到内存单元返回的数据之后,结果处理模块将数据发送给TCAM单元;并且,TCAM单元确定出了程序指针;从而,查找引擎单元中的TCAM单元可以将数据和程序指针,发送给线程单元。
或者,图3所示,TCAM单元复用了现有技术中的TCAM单元,查找引擎单元与TCAM单元连接,查找引擎单元的结果处理模块接收到内存单元返回的数据,并且,结果处理模块接收到TCAM单元返回的将程序指针;从而,查找引擎单元的结果处理模块可以将数据和程序指针,发送给线程单元。
或者,图3所示,TCAM单元复用了现有技术中的TCAM单元,查找引擎单元与TCAM单元连接,查找引擎单元的结果处理模块接收到内存单元返回的数据,查找引擎单元的结果处理模块可以将数据发送给线程单元;并且,TCAM单元确定出了程序指针,TCAM单元可以将程序指针发送给线程单元。
举例来说,如果内存单元查找返回的数据中的内容的值正好是条件B,条件B对应的程序指针为PC2,TCAM单元确定出的程序指针是PC2;线程单元执行PC2对应的指令。
举例来说,线程单元从报文的报文头中提取出目的IP地址,然后将目的IP地址赋值给字段D;线程单元需要获取table1中的数据,线程单元需要从table1中获得字段A、字段B和字段C,加上字段D去做分支查找的字段;中央处理器向线程单元发送查找标识profileid=1;线程单元将table1的索引值index为2的表项,转换为具体的物理地址,具体来说,线程单元根据table1的标识为1、index为2,计算得到物理地址;然后,线程单元将具体的物理地址、profileid=1、字段D的值发放到查找指令中。线程单元向查找引擎单元发送查找指令,当查找指令发送出去之后,线程单元从RUN状态切换到WAIT状态;其中,图6为本申请实施例提供的查找指令的格式的示意图,查找指令的具体格式如图6所示。然后,查找引擎单元的请求处理模块从查找指令中提取出字段D和查找标识,请求处理模块将字段D和查找标识发送给查找引擎单元的结果处理模块;请求处理模块从查找指令中提取出物理地址,请求处理模块将物理地址发送给内存单元。内存单元确定出物理地址所指示的数据,其中,数据中包括字段A、字段B、字段C、字段E和字段F;内存单元将数据发送给查找引擎单元的结果处理模块。查找引擎单元的结果处理模块根据profile id=1,确定出需要保留字段A、字段B和字段C;然后,结果处理模块根据字段A、字段B、字段C和字段D,构造出查找关键字key;结果处理模块向TCAM单元发送一个分支查找指令,该分支查找指令中包括key。其中,图7为本申请实施例提供的分支查找指令的格式的示意图,分支查找指令的具体格式如图7所示,分支查找指令的语句的条件顺序依次是字段A、字段B、字段C、字段D,字段A的优先级为1,字段B的优先级为2,字段C的优先级为3,字段D的优先级为4;从而,TCAM单元先用字段A查表,若不命中再用字段B查表,以此类推;例如,字段A的值是条件A时命中,否不命中,条件A例如是0或1;进而TCAM单元得到程序指针。在图2所示的芯片结构中,TCAM单元设置在查找引擎单元中;查找引擎单元的结果处理模块会将字段A、字段B和字段C,发送给TCAM单元;由于TCAM单元确定出程序指针,TCAM单元将程序指针、字段A、字段B和字段C一起返回给线程单元。然后,线程单元从WAIT状态切换到RUN状态,线程单元执行程序指针对应的指令。
本实施例,通过芯片的线程单元向芯片的查找引擎单元发送查找指令,其中,查找指令包括数据地址、第一查找字段和查找标识,查找标识用于标识第二查找字段,然后,线程单元从RUN状态切换到WAIT状态;查找引擎单元根据查找指令,确定数据地址所指示的数据;并且,查找引擎单元生成查找关键字,查找引擎单元向TCAM单元发送分支查找指令去查找程序指针,分支查找指令中包括查找关键字;然后,查找引擎单元将确定出的数据和程序指针,返回给线程单元;线程单元接收查找引擎单元发送的数据和程序指针之后,线程单元从WAIT状态切换到RUN状态,线程单元执行程序指针对应的指令。在以上过程中,由于线程单元只需要发起一次查找指令,就可以获取到线程单元所需要的数据和程序指针,从而线程单元只进行了一次RUN状态到WAIT状态的切换,即线程单元只需要执行一次RUN状态到WAIT状态的切换,就可以完成数据的查找和分支查找;进而,减少了线程单元切换到WAIT状态的次数,线程单元的指令处理过程被打断的次数减少,线程单元不需要多次重复执行已经执行过的步骤,从而可以加快线程单元的指令处理过程,提升指令处理效率,加快芯片的核的运行效率和芯片的运行效率。并且,由查找引擎单元确定出数据中需要保留的字段。
上文中详细描述了根据本申请实施例的指令处理方法,下面将描述本申请实施例的网络芯片。
在一个示例中,图8为本申请实施例提供的一种芯片的示意性框图,如图8所示,该芯片包括:线程单元05和查找引擎单元06,其中,线程单元05与查找引擎单元06连接;
线程单元05,用于向查找引擎单元06发送查找指令,其中,查找指令包括数据地址和第一查找字段;
查找引擎单元06,用于根据查找指令,确定数据地址所指示的数据和第一查找字段所指示的程序指针;将数据和程序指针,发送给线程单元05。
其中,线程单元05可以执行图4所示方法的步骤101,查找引擎单元06可以执行图4所示方法的步骤102。
图8所示实施例的芯片可用于执行上述方法中图4所示实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
本实施例,通过提供一种芯片,芯片包括线程单元和查找引擎单元;线程单元向查找引擎单元发送查找指令,其中,查找指令包括数据地址和第一查找字段,然后,线程单元从RUN状态切换到WAIT状态;查找引擎单元根据查找指令,确定数据地址所指示的数据和第一查找字段所指示的程序指针;线程单元接收查找引擎单元发送的数据和程序指针,然后,线程单元从WAIT状态切换到RUN状态。在以上过程中,由于线程单元只需要发起一次查找指令,就可以获取到线程单元所需要的数据和程序指针,从而线程单元只进行了一次RUN状态到WAIT状态的切换,减少了线程单元切换到WAIT状态的次数,从而可以加快线程单元的指令处理过程,加快芯片的核的运行效率和芯片的运行效率。
在一个示例中,图9为本申请实施例提供的一种芯片的示意性框图,图10为本申请实施例提供的另一种芯片的示意性框图,如图9和图10所示,在图8所示芯片的基础上,芯片还包括TCAM单元07;查找引擎单元06包括请求处理模块061和结果处理模块062,请求处理模块061与结果处理模块062连接。
其中,如图9所示,TCAM单元07包括接收模块071、确定模块072和发送模块073,接收模块071、发送模块073分别与确定模块072连接;接收模块071与结果处理模块062连接;发送模块073与线程单元05连接;TCAM单元07设置在查找引擎单元06中,查找引擎单元06中的各模块和TCAM单元07执行以下过程:
请求处理模块061,用于根据数据地址,确定数据;其中,请求处理模块061可以执行图5所示方法的步骤204。
结果处理模块062,用于获取数据,并根据数据和第一查找字段,确定查找关键字;向TCAM单元07发送查找关键字和数据;其中,结果处理模块062可以执行图5所示方法的步骤205和206。
接收模块071,用于接收结果处理模块062发送的查找关键字和数据;
确定模块072,用于根据查找关键字确定程序指针。其中,确定模块072可以执行图5所示方法的步骤207。
发送模块073,用于将数据和程序指针,发送给线程单元05。
或者,如图10所示,TCAM单元07包括接收模块071、确定模块072和发送模块073,接收模块071、发送模块073分别与确定模块072连接。TCAM单元07与查找引擎单元06连接;接收模块071、发送模块073分别与结果处理模块062连接;查找引擎单元06中的各模块和TCAM单元07执行以下过程:
请求处理模块061,用于根据数据地址,确定数据;其中,请求处理模块061可以执行图5所示方法的步骤204。
结果处理模块062,用于获取数据,并根据数据和第一查找字段,确定查找关键字;向TCAM单元07发送查找关键字;其中,结果处理模块062可以执行图5所示方法的步骤205和206。
接收模块071,用于接收结果处理模块062发送的查找关键字。
确定模块072,用于根据查找关键字确定程序指针。其中,确定模块072可以执行图5所示方法的步骤207。
发送模块073,用于将程序指针发送给结果处理模块062。其中,发送模块073可以执行图5所示方法的步骤207。结果处理模块062,还用于将数据和程序指针,发送给线程单元05。
可选的,芯片还包括内存单元08,内存单元08分别与请求处理模块061、结果处理模块062连接。
请求处理模块061,用于向内存单元08发送数据地址;其中,请求处理模块061可以执行图5所示方法的步骤2041。
内存单元08,用于根据数据地址,确定数据地址所指示的数据,并将数据地址所指示的数据发送给结果处理模块062。其中,内存单元08可以执行图5所示方法的步骤2042。
可选的,查找指令中还包括查找标识,查找标识用于标识第二查找字段;结果处理模块062,具体用于:根据查找标识,确定数据中的第二查找字段;根据第一查找字段和第二查找字段,生成查找关键字。其中,结果处理模块062可以执行图5所示方法的步骤205。
查找关键字中包括第一查找字段、第一查找字段的优先级、第二查找字段以及第二查找字段的优先级。
可选的,线程单元05,还用于:在向查找引擎单元06发送查找指令之前获取报文,并根据报文中的任意字段,生成第一查找字段。可选的,任意字段为数据的目的地址。其中,线程单元05可以执行图5所示方法的步骤201和202。
图9和图10所示实施例的芯片可用于执行上述方法中图5所示实施例的技术方案,其实现原理和技术效果类似,此处不再赘述。
并且,图9和图10所示实施例的实施不依赖于图8所示的实施例是否实施,本实施例可以独立实施。
本实施例,通过提供一种芯片,芯片包括线程单元、查找引擎单元、TCAM单元和内存单元,其中,TCAM单元设置在查找引擎单元中,或者TCAM单元与查找引擎单元连接;线程单元向查找引擎单元发送查找指令,其中,查找指令包括数据地址、第一查找字段和查找标识,查找标识用于标识第二查找字段,然后,线程单元从RUN状态切换到WAIT状态;查找引擎单元根据查找指令,确定数据地址所指示的数据;并且,查找引擎单元生成查找关键字,查找引擎单元向TCAM单元发送分支查找指令去查找程序指针,分支查找指令中包括查找关键字;然后,查找引擎单元将确定出的数据和程序指针,返回给线程单元;线程单元接收查找引擎单元发送的数据和程序指针之后,线程单元从WAIT状态切换到RUN状态,线程单元执行程序指针对应的指令。在以上过程中,由于线程单元只需要发起一次查找指令,就可以获取到线程单元所需要的数据和程序指针,从而线程单元只进行了一次RUN状态到WAIT状态的切换,即线程单元只需要执行一次RUN状态到WAIT状态的切换,就可以完成数据的查找和分支查找;进而,减少了线程单元切换到WAIT状态的次数,线程单元的指令处理过程被打断的次数减少,线程单元不需要多次重复执行已经执行过的步骤,从而可以加快线程单元的指令处理过程,提升指令处理效率,加快芯片的核的运行效率和芯片的运行效率。并且,由查找引擎单元确定出数据中需要保留的字段。
图11为本申请实施例提供的一种指令处理设备的示意性框图。如图11所示,该指令处理设备包括发送器261、接收器262和处理器263。
其中,处理器263用于执行图4的各步骤,或者,处理器263用于执行图5的各步骤。处理器263用于实现图8-10的各单元和模块。
图11所示实施例的指令处理设备的处理器263可用于执行上述方法实施例的技术方案,或者图8-10所示实施例各个单元和模块的程序,处理器263调用该程序,执行以上方法实施例的操作,以实现图8-10所示的各单元和模块。
其中,处理器263也可以为芯片,图11中表示为“芯片/处理器263”。发送器261和接收器262用于支持指令处理设备与上述实施例中的网络环境中的各设备之间收发信息,以及支持指令处理设备与上述实施例中的网络环境中的各设备之间进行通信。
进一步的,指令处理设备还可以包括存储器264,存储器264用于存储指令处理设备的程序代码和数据。进一步的,指令处理设备还可以包括通信接口265。
处理器263例如是芯片或NPCPU,还可以是被配置成实施以上方法的一个或多个集成电路,例如:一个或多个特定集成电路(Application Specific Integrated Circuit,ASIC),或,一个或多个微处理器(digital singnal processor,DSP),或,一个或者多个现场可编程门阵列(Field Programmable Gate Array,FPGA)等。存储器264可以是一个存储器,也可以是多个存储元件的统称。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如,同轴电缆、光纤、数字用户线(Digital Subscriber Line,DSL))或无线(例如,红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如,固态硬盘(Solid State Disk,SSD))等。
本领域技术人员应该可以意识到,在上述一个或多个示例中,本申请实施例所描述的功能可以用硬件、软件、固件或它们的任意组合来实现。当使用软件实现时,可以将这些功能存储在计算机可读介质中或者作为计算机可读介质上的一个或多个指令或代码进行传输。计算机可读介质包括计算机存储介质和通信介质,其中通信介质包括便于从一个地方向另一个地方传送计算机程序的任何介质。存储介质可以是通用或专用计算机能够存取的任何可用介质。
Claims (14)
1.一种指令处理方法,应用于芯片,所述芯片包括线程单元和查找引擎单元,其特征在于,包括:
所述线程单元向所述查找引擎单元发送查找指令,其中,所述查找指令包括数据地址和第一查找字段;
所述查找引擎单元根据所述查找指令,确定所述数据地址所指示的数据和所述第一查找字段所指示的程序指针;
所述查找引擎单元将所述数据和所述程序指针,发送给所述线程单元。
2.根据权利要求1所述的方法,其特征在于,所述芯片还包括三态内容寻址存储器TCAM单元,所述TCAM单元设置在所述查找引擎单元中;所述查找引擎单元根据所述查找指令,确定所述数据地址所指示的数据和所述第一查找字段所指示的程序指针,包括:
所述查找引擎单元根据所述数据地址,确定所述数据;
所述查找引擎单元根据所述数据和所述第一查找字段,确定查找关键字;
所述查找引擎单元向所述TCAM单元发送所述查找关键字和所述数据;
所述TCAM单元根据所述查找关键字确定所述程序指针。
3.根据权利要求1所述的方法,其特征在于,所述芯片还包括三态内容寻址存储器TCAM单元,所述TCAM单元与所述查找引擎单元连接;所述查找引擎单元根据所述查找指令,确定所述数据地址所指示的数据和所述第一查找字段所指示的程序指针,包括:
所述查找引擎单元根据所述数据地址,确定所述数据;
所述查找引擎单元根据所述数据和所述第一查找字段,确定查找关键字;
所述查找引擎单元向所述TCAM单元发送所述查找关键字;
所述TCAM单元根据所述查找关键字确定所述程序指针,并将所述程序指针发送给所述查找引擎单元。
4.根据权利要求2或3所述的方法,其特征在于,所述芯片还包括内存单元,所述查找引擎单元根据所述数据地址,确定所述数据,包括:
所述查找引擎单元向所述内存单元发送所述数据地址;
所述内存单元根据所述数据地址,确定所述数据地址所指示的数据,并将所述数据地址所指示的数据发送给所述查找引擎单元。
5.根据权利要求2-4任一项所述的方法,其特征在于,所述查找指令中还包括查找标识,所述查找标识用于标识第二查找字段;所述查找引擎单元根据所述数据和所述第一查找字段,确定查找关键字,包括:
所述查找引擎单元根据所述查找标识,确定所述数据中的所述第二查找字段;
所述查找引擎单元根据所述第一查找字段和所述第二查找字段,生成所述查找关键字。
6.根据权利要求5所述的方法,其特征在于,所述查找关键字中包括所述第一查找字段、所述第一查找字段的优先级、所述第二查找字段以及所述第二查找字段的优先级。
7.根据权利要求1-6任一项所述的方法,其特征在于,在所述线程单元向所述查找引擎单元发送查找指令之前,还包括:
所述线程单元获取报文,其中,所述报文中包括所述数据的目的地址;
所述线程单元根据所述数据的目的地址,生成所述第一查找字段。
8.一种芯片,其特征在于,所述芯片包括:线程单元和查找引擎单元,其中,所述线程单元与所述查找引擎单元连接;
所述线程单元,用于向所述查找引擎单元发送查找指令,其中,所述查找指令包括数据地址和第一查找字段;
所述查找引擎单元,用于根据所述查找指令,确定所述数据地址所指示的数据和所述第一查找字段所指示的程序指针;将所述数据和所述程序指针,发送给所述线程单元。
9.根据权利要求8所述的芯片,其特征在于,所述芯片还包括三态内容寻址存储器TCAM单元,所述TCAM单元设置在所述查找引擎单元中;
所述查找引擎单元包括请求处理模块和结果处理模块,所述请求处理模块与所述结果处理模块连接;所述TCAM单元包括接收模块、确定模块和发送模块,所述接收模块、所述发送模块分别与所述确定模块连接;
所述请求处理模块,用于根据所述数据地址,确定所述数据;
所述结果处理模块,用于获取所述数据,并根据所述数据和所述第一查找字段,确定查找关键字;
所述接收模块,用于接收所述结果处理模块发送的所述查找关键字和所述数据;
所述确定模块,用于根据所述查找关键字确定所述程序指针;
所述发送模块,用于将所述数据和所述程序指针,发送给所述线程单元。
10.根据权利要求8所述的芯片,其特征在于,所述芯片还包括三态内容寻址存储器TCAM单元,所述TCAM单元与所述查找引擎单元连接;
所述查找引擎单元包括请求处理模块和结果处理模块,所述请求处理模块与所述结果处理模块连接;所述TCAM单元包括接收模块、确定模块和发送模块,所述接收模块、所述发送模块分别与所述确定模块连接;
所述请求处理模块,用于根据所述数据地址,确定所述数据;
所述结果处理模块,用于获取所述数据,并根据所述数据和所述第一查找字段,确定查找关键字;
所述接收模块,用于接收所述结果处理模块发送的所述查找关键字;
所述确定模块,用于根据所述查找关键字确定所述程序指针;
所述发送模块,用于将所述程序指针发送给所述结果处理模块;
所述结果处理模块,还用于将所述数据和所述程序指针,发送给所述线程单元。
11.根据权利要求9或10所述的芯片,其特征在于,所述芯片还包括内存单元,所述内存单元分别与所述请求处理模块、所述结果处理模块连接;
所述请求处理模块,用于向所述内存单元发送所述数据地址;
所述内存单元,用于根据所述数据地址,确定所述数据地址所指示的数据,并将所述数据地址所指示的数据发送给所述结果处理模块。
12.根据权利要求9-11任一项所述的芯片,其特征在于,所述查找指令中还包括查找标识,所述查找标识用于标识第二查找字段;所述结果处理模块,具体用于:
根据所述查找标识,确定所述数据中的所述第二查找字段;
根据所述第一查找字段和所述第二查找字段,生成所述查找关键字。
13.根据权利要求12所述的芯片,其特征在于,所述查找关键字中包括所述第一查找字段、所述第一查找字段的优先级、所述第二查找字段以及所述第二查找字段的优先级。
14.根据权利要求8-13任一项所述的芯片,其特征在于,所述线程单元,还用于:
在向所述查找引擎单元发送查找指令之前获取报文,其中,所述报文中包括所述数据的目的地址;
根据所述数据的目的地址,生成所述第一查找字段。
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811526986.0A CN111324382B (zh) | 2018-12-13 | 2018-12-13 | 指令处理方法和芯片 |
EP19894659.2A EP3723330B1 (en) | 2018-12-13 | 2019-12-13 | Instruction processing method and chip |
PCT/CN2019/125296 WO2020119796A1 (zh) | 2018-12-13 | 2019-12-13 | 指令处理方法和芯片 |
US16/922,457 US11442735B2 (en) | 2018-12-13 | 2020-07-07 | Search instruction to access a TCAM and memory to return a program counter value from the TCAM |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811526986.0A CN111324382B (zh) | 2018-12-13 | 2018-12-13 | 指令处理方法和芯片 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111324382A true CN111324382A (zh) | 2020-06-23 |
CN111324382B CN111324382B (zh) | 2023-03-03 |
Family
ID=71075590
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811526986.0A Active CN111324382B (zh) | 2018-12-13 | 2018-12-13 | 指令处理方法和芯片 |
Country Status (4)
Country | Link |
---|---|
US (1) | US11442735B2 (zh) |
EP (1) | EP3723330B1 (zh) |
CN (1) | CN111324382B (zh) |
WO (1) | WO2020119796A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419989A (zh) * | 2021-06-11 | 2021-09-21 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020110122A1 (en) * | 2001-02-14 | 2002-08-15 | Dynarc Inc. | Dynamic packet processor architecture |
US20080192754A1 (en) * | 2007-02-12 | 2008-08-14 | Yoon-Jin Ku | Routing system and method for managing rule entries of ternary content addressable memory in the same |
CN101267331A (zh) * | 2008-04-23 | 2008-09-17 | 华为技术有限公司 | 一种组播转发表查找方法和装置 |
CN101834802A (zh) * | 2010-05-26 | 2010-09-15 | 华为技术有限公司 | 转发数据包的方法及装置 |
CN105791126A (zh) * | 2014-12-26 | 2016-07-20 | 中兴通讯股份有限公司 | 一种三态内容可寻址存储器tcam查表方法及装置 |
CN107800627A (zh) * | 2016-09-06 | 2018-03-13 | 南京中兴软件有限责任公司 | 三态内容寻址存储器tcam表的写入方法及装置 |
CN108737278A (zh) * | 2017-04-21 | 2018-11-02 | 中兴通讯股份有限公司 | 一种查表方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8854996B2 (en) * | 2010-12-16 | 2014-10-07 | International Business Machines Corporation | Accelerating data packet parsing |
CN102216909A (zh) * | 2011-05-27 | 2011-10-12 | 华为技术有限公司 | 一种网络处理器和网络处理器所存程序的诊断方法 |
CN103973571A (zh) * | 2013-02-05 | 2014-08-06 | 中兴通讯股份有限公司 | 网络处理器及其路由查找方法 |
WO2019237029A1 (en) * | 2018-06-08 | 2019-12-12 | Fungible, Inc. | Directed graph traversal using content-addressable memory |
-
2018
- 2018-12-13 CN CN201811526986.0A patent/CN111324382B/zh active Active
-
2019
- 2019-12-13 WO PCT/CN2019/125296 patent/WO2020119796A1/zh unknown
- 2019-12-13 EP EP19894659.2A patent/EP3723330B1/en active Active
-
2020
- 2020-07-07 US US16/922,457 patent/US11442735B2/en active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20020110122A1 (en) * | 2001-02-14 | 2002-08-15 | Dynarc Inc. | Dynamic packet processor architecture |
US20080192754A1 (en) * | 2007-02-12 | 2008-08-14 | Yoon-Jin Ku | Routing system and method for managing rule entries of ternary content addressable memory in the same |
CN101267331A (zh) * | 2008-04-23 | 2008-09-17 | 华为技术有限公司 | 一种组播转发表查找方法和装置 |
CN101834802A (zh) * | 2010-05-26 | 2010-09-15 | 华为技术有限公司 | 转发数据包的方法及装置 |
CN105791126A (zh) * | 2014-12-26 | 2016-07-20 | 中兴通讯股份有限公司 | 一种三态内容可寻址存储器tcam查表方法及装置 |
CN107800627A (zh) * | 2016-09-06 | 2018-03-13 | 南京中兴软件有限责任公司 | 三态内容寻址存储器tcam表的写入方法及装置 |
CN108737278A (zh) * | 2017-04-21 | 2018-11-02 | 中兴通讯股份有限公司 | 一种查表方法及装置 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113419989A (zh) * | 2021-06-11 | 2021-09-21 | 上海壁仞智能科技有限公司 | 人工智能芯片及其操作方法 |
Also Published As
Publication number | Publication date |
---|---|
US20200334040A1 (en) | 2020-10-22 |
CN111324382B (zh) | 2023-03-03 |
EP3723330A4 (en) | 2021-03-24 |
EP3723330B1 (en) | 2024-07-31 |
US11442735B2 (en) | 2022-09-13 |
EP3723330A1 (en) | 2020-10-14 |
WO2020119796A1 (zh) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20200142760A1 (en) | Packet processing on a multi-core processor | |
US8681819B2 (en) | Programmable multifield parser packet | |
CN102104541B (zh) | 报头处理引擎 | |
CN112333169B (zh) | 一种报文处理方法、装置、电子设备及计算机可读介质 | |
CN115486046B (zh) | 基于开放虚拟软交换机ovs的数据包处理方法及设备 | |
US20190327105A1 (en) | Method and apparatus for pushing information | |
CN111510478B (zh) | 请求处理方法、装置、***及电子设备 | |
CN113746749A (zh) | 网络连接设备 | |
CN111324382B (zh) | 指令处理方法和芯片 | |
KR20120062174A (ko) | 다양한 특성의 패킷을 동적으로 처리하는 패킷 처리장치 및 방법 | |
CN113765867B (zh) | 一种数据传输方法、装置、设备及存储介质 | |
US20060274762A1 (en) | Method and system for supporting efficient and cache-friendly TCP session lookup operations based on canonicalization tags | |
US7773590B2 (en) | Combined interface and non-interface specific associative memory lookup operations for processing of packets | |
CN114338529B (zh) | 五元组规则匹配方法及装置 | |
JP5674179B1 (ja) | 効率的なネットワークアドレス変換およびアプリケーションレベルゲートウェイ処理のための装置および方法 | |
CN106790441B (zh) | 创建策略模板表的方法及装置、会话处理的方法及装置 | |
CN111125493B (zh) | 一种基于协议无感知转发的高速数据查询***及方法 | |
CN110266614B (zh) | 一种以太数据交换方法和装置 | |
US20230336643A1 (en) | Packet modification method and apparatus, computer device, and storage medium | |
CN116600031B (zh) | 报文处理方法、装置、设备及存储介质 | |
CN111050339B (zh) | 一种基于协议无感知转发的高速数据更新***及方法 | |
CN114827655B (zh) | 内容存储转发方法及装置、电子设备、存储介质 | |
CN114747193B (zh) | 交换芯片 | |
CN115866094A (zh) | 一种数据传输***、方法及电子设备 | |
CN116016687A (zh) | 一种基于dpdk的报文分流方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |