多核架构越来越普遍,本文主要介绍的是网络处理器跟多核的关系。广义上讲,中高端的网络处理器一般都有多个微引擎ME,也可以看作为多核的架构,只不过中、高端的网络处理器的架构是比较特殊的,不是通常的X86、ARM、MIPS、ARC等等。
目前也有基于通用如ARC架构的高端网络处理器,性能能达到双工400Gbps。是多核多线程的实现。16(clusters)*16(cores)*16(hardware threads)
NP资源:
1.16个clusters,每个clusters有16个cores,每个core有16线程。即总共有256个cores,4096个hw threads
2.16KB的CMEM memory & data cache用于CTOP程序
3.16MB IMEM(internal memory)用于存放code,查找表,data,存放报文等
4.48G DDR3
5.2*128个PMU queues of jobs(分网络侧、交换侧)
每个核feature
1.7级流水,每个线程有各自的一套RF(0-31),共享ALU等单元
2.指令cache、数据cache
3.其它MMU、Timer、中断控制器等
多线程feature,每个核是多线程的,多线程实际是time share的,通过多线程隐藏了大延时的操作如查表等:
1.支持4个outstanding transactions,支持并行run多个事务
如:报文头的copy和表的查找同时进行。当两个动作都完成的时间执行线程的切换。
2.线程的切换只要有1个cycle
3.提供同步api,执行一个long opeartion后会执行显式的线程切换
4.也有异步api
线程的调度
每个核都配备一个MTM(多线程管理器)。MTM负责管理job的状态,管理上下文的切换,MTM是进行切换的决策,实际的切换指令的执行是CTOP进行的。MTM负责切换线程到disable/halt/cold/warm状态。CTOP切换thread从"warm"、"hot" to "hot" 、"cold"。
MTM为新的job request在active transaction scoreboadrd中分配一个新的entry。
MTM发送请求to MSU(msu是cluster级的),MSU响应jobid。
MTM保存jobid
MTM将有资格的线程标记成cold
CTOP请求线程执行
MTM调度thread为warm状态
CTOP切换执行线程 (CTOP提供线程调度的指令)