Uma apresentação que cobre as novas funcionalidades do Vector Packed Decimal Facility recentemente anunciado junto com o lançamento do Mainframe z14. Esse Feature permite que aplicações já existentes tenham ganho de performance significativo em algumas rotinas numéricas sem alterações no código fonte.
Gerenciamento de TI - Métodos Ágeis por Prof. Me Valdir Morales (Faculdades O...
Acelerando aplicações com Vector Packed Decimal Facility do z14
1. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Acelerando suas aplicações com o novíssimo
Vector Packed Decimal Facility do z14
15/05/2018
Flavio C Buccianti
flaviocb@gmail.com
2. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Implementação do Vector Facility nos mainframes IBM z
• 1a Geração: Implementação antiga disponibilizada até o ESA/390
• 2a Geração : Reintroduzido na família z13 (ARCH(11)) em 2015
• Baseado AltiVEC desenvolvida pela IBM, Apple e Motorola - final de 90
• Totalmente diferente da implementação anterior (ESA/390)
• Implementção similar à existente em Power + extensões para Z
• Adiciona um conjunto novo de 32 registradores de 128 bits
• 139 novas instruções
• Suporta SIMD (Single Instruction Multiple Data)
• Precisa ter o Vector Facility habilitado
• Programas compilados com opção ARCH(11) exploram as novas instruções (Compiladores
mais recentes)
• AltiVEC implemenado nos processadores Power
• Power PC 970 (G5) em 2002 – Acelerador de Vídeo e Multimidia
• Cell Processor (PS3, Blades Cell) em 2006 – Video, Multimidia e Cálculos Vetoriais
• Power 6 (pSeries) em 2007 – Cáculos Vetoriais (SIMD)
3. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Implementação do Vector Facility nos mainframes IBM z
Vector Registers
• 32 Registradores
• Registradores de 128 bits
• Primeiros 16 registrdores compartilhados com Floating-
Point (FP) registers (somente a primeria metade do
registrador).
• SIMD
4. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Múltiplos dados podem ser carregados num único Vector Register,
permitindo operações do tipo SIMD (Single Instruction Multiple Data).
Vector Register “n”
Vector Register – ocupação lógica dos dados
Implementação do Vector Facility nos mainframes IBM Z
5. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Implementação do Vector Facility nos mainframes IBM z
Manuseando dados utilizando SIMD
Soma de elementos com SIMD:
Soma convencional:
6. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
• Implementado a partir da z14 (ARCH(12))
– Vector Facility é pré-requisito
– Operações Vector Packed Decimal NÃO são executáveis em z13
• Utiliza as facilidades implementadas pelo Vector Facility
– Utiliza os mesmos 32 registradores de 128 bits
– 16 novas instruções implementadas
– Não permite SIMD com dados tipo PACKED
– Precisa ter o Vector Facility habilitado
– Programas compilados com opção ARCH(12) exploram as novas
instruções (Compiladores mais recentes)
7. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
O que é o packed decimal format ?
•Signed Packed Decimal Format:
- Cada Byte contém dois dígitos, um em cada metade (NIBBLE)
- Cada Nibble pode ter valores binários de 0000 a 1001 (0 a 9)
- O úlimo Nibble da direita contém o sinal (S)
- Valores positivos contém o valor binário 1100 ou x’C’
- Valores Negativos contém o valor binário 1101 ou x’D’
O que é diferente no Vector Packed Decimal da z14 ?
•Os números são calculados usando somente os Vector Registers evitando uso de memória.
•Cada Vector register pode conter um número com até 31 dígitos mais o sinal (S).
•Se o número for menor que 31 digitos, as posições da esquerda do número serão preenchidas
com zeros.
•Os números sermpre estarão alinhados à direita dentro do Vector Register.
8. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
Valor Comp-3(hex) Dentro do vector register
+0 0C 0000000000000000000000000000000C
+1 1C 0000000000000000000000000000001C
+32 03 2C 0000000000000000000000000000032C
+473 47 3C 0000000000000000000000000000473C
+6189 61 89 4C 0000000000000000000000000006189C
-1 1D 0000000000000000000000000000001D
-6189 61 89 4D 0000000000000000000000000006189D
9. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
VECTOR ADD DECIMAL
VECTOR COMPARE DECIMAL
VECTOR CONVERT TO BINARY
VECTOR CONVERT TO DECIMAL
VECTOR DIVIDE DECIMAL
VECTOR LOAD IMMEDIATE DECIMAL
VECTOR MULTIPLY DECIMAL
VECTOR MULTIPLY AND SHIFT DECIMAL
VECTOR PACK ZONED
VECTOR PERFORM SIGN OPERATION DECIMAL
VECTOR REMAINDER DECIMAL
VECTOR SHIFT AND DIVIDE DECIMAL
VECTOR SHIFT AND ROUND DECIMAL
VECTOR SUBTRACT DECIMAL
VECTOR TEST DECIMAL
VECTOR UNPACK ZONED
Novas instruções implementadas no z14
10. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
Quais são as vantagens do novo conjunto de instruções ?
-Operações com numeros packed (Vector) são mais rápidas e usam menos instruções
- Decimal Packed tradicional usa memória X Vector Packed Dec usa só registradores
-Suporte nos novos compiladores com opção ARCH(12)
-Não existe necessidade de adaptar ou reescrever os programas
-Basta recompilar os programas com ARCH(12)
-Suportado pela maioria das linguagens do Z (COBOL, PLI, Java, C/C++, HLASM…)
-Ganhos de performance que podem chegar a 4 vezes ou mais.
-Menos MIPS gastos nas rotinas de cálculo de numeros packed.
Quais são as considerações ?
-Necessita de máquina z14 ou maior para poder utilizar o novo feature.
-Compilações com ARCH(12) não podem ser executados em maquinas anteriores ao z14
11. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
Principais Compiladores que
exploram o
Vector Packed Decimal Facility
12. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
COBOL
• Enterprise COBOL V 6.2
- Anunciado junto com o z14 em 17/7/2017
- ARCH(12) suportado a partir da versão 6.2 (default: ARCH(7))
- Programas COBOL
- Muitos dados no formato Packed ou Zoned Decimal
- Ganhos em performance e redução de MIPS ao utilizarem o suporte ao
Vector Packed Decimal Facility. *(4)
- Sem alterar os fontes, só recompilar com ARCH(12).
13. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
01 WS-VAR-1 COMP-3 PIC s9(14)v9(4).
01 WS-VAR-2 COMP-3 PIC s9(14)v9(4).
01 WS-VAR-3 COMP-3 PIC s9(14)v9(2).
MULTIPLY WS-VAR-1 BY WS-VAR-2
GIVING WS-VAR-3.
Sem ARCH(12)
ZAP 336(16,13),16(2,2)
MVC 352(32,13),58(10)
MVC 366(15,13),0(2)
NI 380(13),X'F0'
MVN 383(1,13),14(2)
L 3,92(0,9
L 15,180(0,3) V(IGZCXDI )
LA 1,180(0,10
BASR 14,15
Com ARCH(12)
VLRL VRF24,_WSA[0x12c] 0(,R3),0xe
VLRL VRF25,_WSA[0x12c] 16(,R3),0x1
VSDP VRF24,VRF24,VRF25,0x6,0
Rotina COBOL de divisão com com números decimais de grande formato:
COBOL
Assembler gerado após a compilação
• Chamada à rotina da biblioteca do LE
• Prepara os dados (Shift) antecpadamente
• Overhead da rotina de divisão
• Usa as novas funcionalidades do ARCH(12)
• Preparação de dados e divisão executados diretamente
* Dados extraidos da apresentação (4) da IBM na SHARE de Providence em 7/08/2017 por Tom Ross (Captain COBOL)
14. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
01 WS-VAR-1 COMP-3 PIC s9(14)v9(4).
01 WS-VAR-2 COMP-3 PIC s9(14)v9(4).
01 WS-VAR-3 COMP-3 PIC s9(14)v9(2).
MULTIPLY WS-VAR-1 BY WS-VAR-2
GIVING WS-VAR-3.
Sem ARCH(12)
L 3,92(0,9)
L 15,188(0,3) V(IGZCXMU )
LA 1,171(0,10)
BASR 14,15
NI 388(13),X'0F'
MVN 396(1,13),399(13)
ZAP 32(9,2),388(9,13)
Com ARCH(12)
VLRL VRF16,152(,R9),0x9
VLRL VRF17,168(,R9),0x9 VMSP
VRF16,VRF16,VRF17,0x6,0
Rotina COBOL de Multiplicação com com números decimais de grande formato:
COBOL
Assembler gerado após a compilação
• Chamada à rotina da biblioteca do LE
• Prepara os dados antecpadamente
• Overhead da rotina de divisão
• Usa as novas funcionalidades do ARCH(12)
• Preparação de dados e divisão executados diretamente
* Dados extraidos da apresentação (4) da IBM na SHARE de Providence em 7/08/2017 por Tom Ross (Captain COBOL)
15. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
Testes com loop de rotina COBOL executada 100 Milhões de vezes *
• ADIÇÃO de Unsigned Packed Decimal – 4.85x mais rápido
– COBOL V4: 3,648 segundos de CPU
– ARCH(11): 2,195 segundos de CPU
– ARCH(12): 0,752 segundos de CPU
• DIVISÃO de número Decimal Longo – 135x mais rápido
– COBOL V4 ou COBOL V5/V6 c/ARCH(11): 2,319 segundos de CPU
– ARCH(12): 0,027 segundos de CPU
• MULTIPLICAÇÃO de número Decimal Longo – 39x mais rápido
– COBOL V4 ou COBOL V5/V6 c/ARCH(11): 2,797 segundos de CPU
– ARCH(12): 0,072 segundos de CPU
• COMPUTE de Zoned Decimal – 3.05x mais rápido
– COBOL V4: 1,469 segundos de CPU
– ARCH(11): 0,837 segundos de CPU
– ARCH(12): 0,482 segundos de CPU
* Dados extraidos da apresentação (4) da IBM na SHARE de Providence em 7/08/2017 por Tom Ross (Captain COBOL)
16. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
PL/I
• Versão 5.2 do Enterprise PL/I for z/OS 5
– Não necessita alterações no fonte do programa, só recompilar.
– Opção ARCH(12) dá suporte ao Vector Packed Decimal Facility.
– Ganho de performance em calculos de PICTURE e FIXED DECIMAL
– Artigo do Developerworks (5) reporta ganhos de performance:
• Até 40% mais rápido em aplicações CPU intensivas
• 10% na média só pelo fato de usar a opção de compilação ARCH(12)
17. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
XL C/C++
• Versão 2.3 do XL C/C++
– Suporte ao Vector Packed Decimal Facility
– Opção de compilação ARCH(12)
– Ao compilar precisam estar em efeito as opções ARCH(12) e VECTOR
– Opção TUNE(12) gera código optimizado para processadores da z14
18. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
IBM Java
• IBM Java V8.5
– Automaticamente reconhece quando está rodando em z14
– Quando executando em z14 o SDK reconhece o método
com.ibm.dataaccess.DecimalData.addPackedDecimal para poder explorar as
instruções do Vector Packed Decimal Facility
– Explora de forma transparente as novas instruções do Vector Packed Decimal
Facility
– Melhoria na performance em geral pelo fato de usar instruções do tipo Register to
Register.
19. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Vector Packed Decimal Facility
Referências
(1) How to Exploit the Vector Packed Decimal Facility in IBM z14 (Artigo IBM Systems Magazine)
http://ibmsystemsmag.com/mainframe/administrator/performance/vector-facility-z14/
(2) IBM z13 Vector Facility Works to Accelerate Features (Artigo IBM Systems Magazine)
http://ibmsystemsmag.com/mainframe/administrator/performance/z13-vector-facility/
(3) IBM z14 Principles of Operations SA22-7832-11 Manual
http://www-01.ibm.com/support/docview.wss?uid=isg2b9de5f05a9d57819852571c500428f9a
(4) Apresentação da SHARE: The latest IBM Z COBOL compiler: Enterprise COBOL V6.2!
http://www-01.ibm.com/support/docview.wss?uid=swg27050205&aid=1
(5) Announcing Enterprise PL/I for z/OS V5.2 – Artigo Developerworks
https://www.ibm.com/developerworks/community/blogs/86d253aa-f216-4642-9f2b-
eedb09087dfc/entry/Announcing_Enterprise_PL_I_for_z_OS_V5_2?lang=en
(6) SIMD no z13 – Conhecendo as novas funções Vetoriais do Mainframe (Apresentção CMG-BR 2013)
https://cmgbrasil.com/2015/05/18/simd-no-z13-conhecendo-as-novas-funcoes-vetoriais-do-mainframe-por-
flavio-buccianti/
20. Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Obrigado !
Flavio C Buccianti
flaviocb@gmail.com