Post on 03-Jul-2020
Projeto de um processador de rede intra-chip para controle de comunicação
entre múltiplos cores
Henrique Cota de Freitas
Disciplina: Arquitetura e Organização de Processadores (PPGC/UFRGS)Prof. Flávio Rech Wagner
13 / 07 / 2006
SumárioIntrodução
ContextoProblema e Objetivos
PropostaOrganização do processadorConjunto de Instruções
ResultadosDescrições em ArchC do processador propostoSimulação da descrição funcional e com precisão de ciclosAvaliação do desempenho
ConclusõesTrabalhos futurosReferências
Contexto
Um Processador de Rede [1] [3] [4] [13] [16] é um Multi-Processor System-on-Chip (MPSoC) [17].
Figura 1 – Blocos construtivos de um processador de rede [5]
Ambientes de desenvolvimento:ArchC: Linguagem de Descrição de Arquitetura [15]SystemC: Linguagem de Descrição de Sistemas [11]
Problema e Objetivos• Problema:
– Múltiplos cores [14] demandam um sistema de comunicação [2] [12] eficiente em roteamento, no controle de fluxo, com baixa latência e alta vazão de dados.
• Objetivos:– Estudar o ambiente de desenvolvimento ArchC.– Projetar, descrever e simular uma arquitetura de
processador de rede intra-chip.– Avaliar o desempenho do processador de rede.– Propor um processador de rede intra-chip, que em
conjunto com a chave crossbar reconfigurável [6] [7], seja capaz de estabelecer com eficiência a comunicação entre múltiplos cores.
Exemplo de utilização
Figura 2 – Roteadores em cascata compostos pelo processador de rede proposto (NP),pela chave crossbar reconfigurável e por buffers de entrada. [9]
R2NP
Figura 3 – Reconfigurable RISC Network Processor [8]
Processador de Rede Intra-Chip Proposto
Figura 4 – Organização do NPoC (Network Processor on Chip) [10]
Pipeline e formato das instruções
Figura 5 – Pipeline do NPoC com cinco estágios [10]
Figura 6 – Formato das instruções do NPoC [10]
IF: Busca de instrução.ID: Decodificação de instrução.EX: Execução de instrução.MEM: Acesso à memória.BCTU: Acesso à unidade detransferência entre crossbar e buffers.SCH: Acesso ao escalonador.REC: Acesso ao buffer de reconfiguração da chave crossbar.WB: Acesso a banco de registradores.
Conjunto de instruções
Algumas instruções de propósito geral:ADD R1, R2, R3 R1 R2 + R3 6 / 7 / 7 / 7 / 5xADDI R1, R2, Imed R1 R2 + Imed 6 / 7 / 7 / 12LOAD R1, R2, Imed R1 Cont. (End[R2+Imed]) 6 / 7 / 7 / 12STORE R1, R2, Imed End[R2+Imed] R1 6 / 7 / 7 / 12JUMP R1, R2, Imed PC R2+Imed, R1 PC 6 / 7 / 7 / 12JEQ R1, R2, R3 PC R1, se R2 = R3 6 / 7 / 7 / 7 / 5x
Instruções de rede:READ R1, R2, Imed R1 Cont. (End[R2+Imed]) 6 / 7 / 7 /12WRITE R1, R2, Imed End[R2+Imed] R1 6 / 7 / 7 /12SEND R1, R2, Imed RCS Buffer(R1), pacote (R2+Imed) 6 / 7 / 7 /12ERASE R1, R2, Imed Buffer R1, Apagar pacote R2+Imed 6 / 7 / 7 /12BLOCK R1, R2, Imed Buffer R1, Bloquear pacote R2+Imed 6 / 7 / 7 /12RECONF RR, R2 RR (reg. de reconfiguração) R2 6 / 7 / 7 /12x
Descrição em ArchC (instrução addi)//!Instruction addi behavior method.
void ac_behavior(addi)
{ dbg_printf("addi r%d, r%d, %d\n", r1, r2,imm & 0xFFFF);
RB[r1] = (RB[r2] + imm);
dbg_printf("Result Reg. = %#x\n", RB[r1]);};
//!Instruction addi behavior method.
void ac_behavior(addi)
{ printf("addi r%d, r%d, %d\n", r1, r2, imm & 0xFFFF);
switch (stage) {
case IF:
break;
case ID:
ID_EX.regwrite = 1;
.......
ID_EX.data3 = 0;
ID_EX.j = 0;
//forwarding for r2
if ( (EX_MEM.regwrite == 1) && (EX_MEM.r1 != 0 ) && (EX_MEM.r1 == ID_EX.r2) )
ID_EX.data2 = EX_MEM.alures.read();
else if ( (MEM_WB.regwrite == 1) && (MEM_WB.r1 != 0 ) && (MEM_WB.r1 == ID_EX.r2) )
ID_EX.data2 = MEM_WB.datamab.read();
else
ID_EX.data2 = RB.read(r2);
break;
case EX:
//forwarding for r2
..............
EX_MEM.alures = (EX_value2 + ID_EX.imm);
EX_MEM.regwrite = ID_EX.regwrite;
EX_MEM.rrwrite = ID_EX.rrwrite;
..............
EX_MEM.npc = ID_EX.npc;
EX_MEM.j = ID_EX.j;
break;
case MEM:
MEM_WB.regwrite = EX_MEM.regwrite;
MEM_WB.rrwrite = EX_MEM.rrwrite;
MEM_WB.datamab = EX_MEM.alures;
MEM_WB.npc = EX_MEM.npc;
MEM_WB.r1 = EX_MEM.r1;
MEM_WB.j = EX_MEM.j;
break;
case WB:
//write back
if (MEM_WB.regwrite == 1){
RB[MEM_WB.r1] = MEM_WB.datamab;
printf("Result Reg. = %#x\n", RB[MEM_WB.r1]);
}
break;
default:
break;
}
};
Ex:Modelofuncional
Ex: Modelo comprecisão de ciclose adiantamento dedados.
Simulação do modelo funcionalDBG: ----- PC=0 ----- 0
DBG: addi r4, r0, 4
DBG: Result Reg. = 0x4
DBG: ----- PC=0x4 ----- 1
DBG: addi r2, r0, 1
DBG: Result Reg. = 0x1
DBG: ----- PC=0x8 ----- 2
DBG: addi r3, r0, 12
DBG: Result Reg. = 0xc
DBG: ----- PC=0xc ----- 3
DBG: mul r2, r2, r4
DBG: Result Reg. = 0x4
DBG: ----- PC=0x10 ----- 4
DBG: addi r4, r4, 65535
DBG: Result Reg. = 0x3
DBG: ----- PC=0x14 ----- 5
DBG: jdi r3, r4, r0
DBG: Result Reg. = 0xc
DBG: ----- PC=0xc ----- 6
DBG: mul r2, r2, r4
DBG: Result Reg. = 0xc
DBG: ----- PC=0x10 ----- 7
DBG: addi r4, r4, 65535
DBG: Result Reg. = 0x2
DBG: ----- PC=0x14 ----- 8
DBG: jdi r3, r4, r0
DBG: Result Reg. = 0xc
DBG: ----- PC=0xc ----- 9
DBG: mul r2, r2, r4
DBG: Result Reg. = 0x18
DBG: ----- PC=0x10 ----- 10
DBG: addi r4, r4, 65535
DBG: Result Reg. = 0x1
DBG: ----- PC=0x14 ----- 11
DBG: jdi r3, r4, r0
DBG: Result Reg. = 0xc
DBG: ----- PC=0xc ----- 12
DBG: mul r2, r2, r4
DBG: Result Reg. = 0x18
DBG: ----- PC=0x10 ----- 13
DBG: addi r4, r4, 65535
DBG: Result Reg. = 0
DBG: ----- PC=0x14 ----- 14
DBG: jdi r3, r4, r0
DBG: Result Reg. = 0xc
DBG: ----- PC=0x18 ----- 15
DBG: nop
DBG: ----- PC=0x1c ----- 16
DBG: nop
DBG: ----- PC=0x20 ----- 17
DBG: nop
DBG: ----- PC=0x24 ----- 18
DBG: nop
Simulação do modelo com precisão de ciclos----- PC=0 ----- 0
addi r4, r0, 4
addi r4, r0, 4
----- PC=0x4 ----- 1
addi r2, r0, 1
addi r4, r0, 4
addi r2, r0, 1
----- PC=0x8 ----- 2
addi r3, r0, 12
addi r4, r0, 4
addi r2, r0, 1
addi r3, r0, 12
----- PC=0xc ----- 3
mul r2, r2, r4
addi r4, r0, 4
Result Reg. = 0x4
addi r2, r0, 1
addi r3, r0, 12
mul r2, r2, r4
----- PC=0x10 ----- 4
addi r4, r4, 65535
..........
..............
nop (bolha)
mul r2, r2, r4
addi r4, r4, 65535
jdi r3, r4, r0
----- PC=0x18 ----- 13
nop (bolha)
mul r2, r2, r4
Result Reg. = 0xc
addi r4, r4, 65535
jdi r3, r4, r0
nop (bolha)
----- PC=0x1c ----- 14
nop (bolha)
...............
mul r2, r2, r4
Result Reg. = 0x18
addi r4, r4, 65535
jdi r3, r4, r0
nop (bolha)
----- PC=0x1c ----- 28
nop (bolha)
................
jdi r3, r4, r0
nop (bolha)
nop (bolha)
nop (bolha)
----- PC=0x24 ----- 30
nop (bolha)
Avaliação de desempenho
Figura 7 – Acessos à memória e registradores [10]
Figura 8 – Tempo de simulação e instruções executadas [10]
Avaliação de desempenho
Figura 11 – Transferência de pacotes [10]
Figura 9 – Acessos à RCS [10] Figura 10 – Implementação de topologias [10]
Conclusões• Modelo de simulação é muito importante na verificação inicial de
funcionamento e desempenho.– Correção e/ou melhoria do projeto.
• Através dos experimentos foi possível verificar o funcionamento das duas descrições (funcional e precisão de ciclos).
• O modelo descrito com precisão de ciclos possui:– Descrição dos registradores entre estágios do pipeline.– Adiantamento de dados.– Descarte de instruções do pipeline na confirmação de um desvio.
• Através dos resultados foi possível verificar:– O funcionamento do conjunto de instruções através de simulações e
estatísticas geradas pelo ArchC.– O ganho de desempenho em relação ao R2NP.– O ganho de desempenho em relação à quantidade de tarefas
necessárias para transferência de pacotes no IXP1200, caso uma versão deste processador ou um mecanismo igual fosse utilizado em um processador de rede intra-chip.
• A principal contribuição é a proposta de um processador de rede intra-chippara uma arquitetura de roteador em networks-on-chip.
Trabalhos Futuros
– Descrição do mecanismo de previsão de desvio.
– Integração com a chave crossbarreconfigurável.
– Proposta da arquitetura do roteador da NoC.– Avaliação da latência de comunicação.– Área ocupada.– Consumo de energia.– Comparação com outras NoCs e sistemas de
comunicação para arquiteturas multi-core.
Referências1. Comer, D. E., “Network Systems Design using Network Processors”, Pearson, Prentice
Hall, 2003
2. Benini, L., Micheli, G. D., “Network-on-chip architectures and design methods”, IEE Proceedings Computers & Digital Techniques, Volume 152, Issue 2, pp.261-272, March 2005
3. Dimopoulos, N. J, et. al., “Network Processors Design: Issues and Chanlleges, IEEE Pacific Rim Conference on Communications, Computers and Signal Processing, PACRIM, Volume 1, 28-30 Aug. 2003, pp.164 – 168
4. Intel IXP1200 Network Processor Family, Hardware Reference Manual, December, 2001
5. Freitas, H. C., “Proposta e Desenvolvimento de um Processador de Rede com Chave Crossbar Reconfigurável”, Dissertação de Mestrado, PUC Minas, Novembro, 2003
6. Freitas, H. C., Ramos, L. E. S., Carvalho, M. B., Amaral, A. M., Diniz, A. R. M., Martins, C. A. P. S., "Reconfigurable Crossbar Switch Architecture for Network Processors". In: IEEE International Symposium on Circuits and Systems, pp.4042-4045, Island of Kos, Greece, May 21 - 24, 2006
7. Freitas, H. C. ; Carvalho, M. B., Martins, C. A. P. S., "RCS-2: Projeto de uma Chave Crossbar Reconfigurável". VI Workshop em Sistemas Computacionais de Alto Desempenho. Rio de Janeiro, 2005
8. Freitas, H. C. e Martins, C. A. P. S., "R2NP: Processador de Rede RISC Reconfigurável", III Workshop em Sistemas Computacionais de Alto Desempenho, Vitória ES, Brasil, pp. 60-67, 2002
Referências9. Freitas, H. C., Santos, T. G. S., Maillard, N., Navaux, P. O. A., “Previsão de Comunicação
em Network-on-Chip para Arquiteturas Multi-Core”, Artigo submetido ao IV Workshop de Processamento Paralelo e Distribuído, Porto Alegre, 2006
10. Freitas, H. C., Wagner F. R, Navaux, P. O. A., Martins, C. A. P. S., “Projeto de um Processador de Rede Intra-Chip para controle de comunicação entre múltiplos cores". Artigo submetido ao VII Workshop em Sistemas Computacionais de Alto Desempenho, Ouro Preto, 2006
11. Ghosh, A., et al., System modeling with SystemC, International Conference on ASIC, pp.18-20, 2001
12. Kumar, R., Zyuban, V., Tullsen, D. M., “Interconnections in Multi-core Architectures: Understanding Mechanisms, Overheads and Scaling”, 32nd International Symposium on Computer Architecture (ISCA), pp.408-419, June 2005
13. Lawton, G., “Will Network Processor Units Live up to Their Promise?”, IEEE Computer, Volume 37, Number 4, pp.13-15, April, 2004
14. Olukotun, K., et al., The Case for a Single-Chip Multiprocessor, 7th International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS), pp.2-11, 1996
15. Rigo, S., et al., “ArchC: A SystemC-Based Architecture Description Language”, International Symposium on Computer Architecture and High Performance Processing, pp.66-73, October 2004
16. Shah, N., Keutzer, K., “Network Processors: Origin of Species”, ISCIS XVII, The Seventeenth International Symposium on Computer and Information Sciences, 5p., 2002
17. Wolf, W., “The Future of Multiprocessor System on Chip”, Proceedings of the DAC 2004, June 2004