SlideShare a Scribd company logo
1 of 39
Download to read offline
SIMD no z13 – Conhecendo as novas
funções Vetoriais do Mainframe.
©2015 Flavio C Buccianti
1
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Tecnologia anunciada no z13
Em Janeiro de 2015 foi anunciada a máquina z Systems z13, o novo Mainframe da IBM.
Entre outras novidades foi anunciada a capacidade de processamento vetorial
 Processamento vetorial, possibilitando instruções tipo SIMD
• Suporte nativo pelos processadores da máquina
 Máximo de 141 processadores configuráveis
 Máximo de 10 TB de memória
 Cloud, Mobile, Analytics e Big Data
2
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Tecnologia anunciada no z13
 Entre outras novidades, foi anunciada a capacidade de processamento vetorial
 SIMD – Single Instruction Multiple Data
• Permite que vários dados compartilhem um mesmo operando para
operações lógicas e aritméticas.
 139 novas instruções Vetoriais
• Vector Support
• Vector Integer
• Vector FP
• Vector String
 32 registradores vetoriais
• 0 a 15 são compartilhados com operações simples de ponto flutuante
• 16 a 31 são Vetoriais dedicados
3
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
AltiVec
AltiVec é um conjunto de instruções vetoriais/SIMD que manipulam tanto números de
ponto flutuante quanto inteiros.
Desenhadas entre 1996 e 1998 em conjunto pela Apple, IBM e Freescale (ex-Motorola
semiconductor).
A Apple foi a primeira usuária quando seus computadores usavam a plataforma Power G5.
Usado para multimídia, para aceleração de gráficos e vídeos.
A Adobe usou esses recursos para otimizar o processamento de imagens do Adobe
Photoshop rodando em Mac OSx para POWER.
A Sony lançou o Playstation 3 utilizando processadores Cell cujo interior é formado por um
processador PowerPC (PPE) e mais oito processadores sinergísticos (SPE), capazes de
executar instruções vetoriais e SIMD, acelerando a execução de cálculos e manuseio de
gráficos. Este processador também contém a tecnologia AltiVec.
O Novo processador do Z13, implementa o conceito do AltiVec com algumas mudanças e
extensões (IBM Z/OS XL C/C++ 2.11 Programming Guide pp. 553 - SC14-7315-01).
4
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Operação Scalar
5
8 12 5 33 10 10 9 27
12 21 1 0 5 33 1 22
20 33 6 33 15 43 10 49
+ + + + + + + +
= = = = = = = =
t t+1 t+2 t+3 t+4 t+5 t+6 t+7
Operação Scalar (não vetorial e não SIMD)
Na operação Scalar, os elementos são individuias. Para executar a soma desse conjunto, devem-se
somar os elementos aos pares (A + B) e guardar o resultado num terceiro elemento ( C ) .
No exemplo acima, seriam usados 8 ciclos onde em cada ciclo, seria necessário carregar o
elemento A, carregar o elemento B efetuar a soma e guardar o resultado no elemento C.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
SIMD – Single Instruction Multiple Data
6
A1 A2 A3 A4 A5 A6 A7 A8
B1 B2 B3 B4 B5 B6 B7 B8
C1 C2 C3 C4 C5 C6 C7 C8
+
=
Vetor 1
Vetor 2
Vetor 3
Com a tecnologia vetorial, é possível colocar vários elementos dentro de um registrador vetorial e continuar a
mante-los isolados entre sí.
t
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
SIMD – Single Instruction Multiple Data
7
8 12 5 33 10 10 9 27
12 21 1 0 5 33 1 22
20 33 6 33 15 43 10 49
+
=
Vetor 1
Vetor 2
Vetor 3
Os dados do Vetor 1 são carregados numa operação só; idem para o Vetor 2.
A soma ocorrerá numa única operação (t). No final da operação, o Vetor 3 terá o conteúdo da soma de Vetor 1
+ Vetor 2 e os números resultantes continuarão isolados entre sí.
t
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
8
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Slide extraído da apresentação IBM:
z13: End-to-end Mobile,Analytics and Cloud PlatformSession B01 / A10
Walter Klaey/ walter.klaey@ch.ibm.com
Europe IMS SWAT Team
IMS Technical Symposium 2015 - 16/3/2015
Registradores vetoriais
FP 0 or VR 0 (bits 0-63) VR 0 (bits 64-127)
FP 1 or VR 1 (bits 0-63) VR 1 (bits 64-127)
FP 2 or VR 2 (bits 0-63) VR 2 (bits 64-127)
FP 3 or VR 3 (bits 0-63) VR 3 (bits 64-127)
FP 4 or VR 4 (bits 0-63) VR 4 (bits 64-127)
FP 5 or VR 5 (bits 0-63) VR 5 (bits 64-127)
FP 6 or VR 6 (bits 0-63) VR 6 (bits 64-127)
FP 7 or VR 7 (bits 0-63) VR 7 (bits 64-127)
FP 8 or VR 8 (bits 0-63) VR 8 (bits 64-127)
FP 9 or VR 9 (bits 0-63) VR 9 (bits 64-127)
FP 10 or VR 10 (bits 0-63) VR 10 (bits 64-127)
FP 11 or VR 11 (bits 0-63) VR 11 (bits 64-127)
FP 12 or VR 12 (bits 0-63) VR 12 (bits 64-127)
FP 13 or VR 13 (bits 0-63) VR 13 (bits 64-127)
FP 14 or VR 14 (bits 0-63) VR 14 (bits 64-127)
FP 15 or VR 15 (bits 0-63) VR 15 (bits 64-127)
VR 16 (bits 0 -127)
VR 17 (bits 0 -127)
VR 18 (bits 0 -127)
VR 19 (bits 0 -127)
VR 20 (bits 0 -127)
VR 21 (bits 0 -127)
VR 22 (bits 0 -127)
VR 23 (bits 0 -127)
VR 24 (bits 0 -127)
VR 25 (bits 0 -127)
VR 26 (bits 0 -127)
VR 27 (bits 0 -127)
VR 28 (bits 0 -127)
VR 29 (bits 0 -127)
VR 30 (bits 0 -127)
VR 31 (bits 0 -127)
0
15
31
Vetoriais
compartilhados com
Registradores FP
Vetoriais dedicados
9Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Registradores vetoriais
Formato e posição dos dados nos registradores vetoriais para operações SIMD
10
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais
As 139 instruções Vector podem ser classificadas em quatro grupos:
• Vector Support Instructions (46): fazem operações do tipo gather, generate
mask, load, merge, pack, permute, replicate, scatter, select, sign, store e unpack.
• Vector Integer (66): fazem operações do tipo add, and, average, checksum,
element compare, compare, count, xor, galois field, load, maximum, multiply, nor,
or, population count, rotate, shift, subtract, sum e test under mask.
• Vector String (6): possibilita a aceleração do processamento de strings com
dados tipo character. As operações são do tipo find, isolate e string range
compare. Total de 6 instruções
• Vector Floating-Point (21): fazem operações do tipo add, compare, convert,
divide, load, multiply, perform sign operation, square root, subtract e test data.
• O manual z/Architecture Principles of Operation – SA22-7832-10, conhecido
como “POP”, traz nos capítulos 21 a 24, a descrição detalhada de todas as
instruções vetoriais.
11
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Assembler
12
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais
Vector Support Instructions (46):
 VECTOR GATHER ELEMENT
 VECTOR GENERATE BYTE MASK
 VECTOR GENERATE MASK
 VECTOR LOAD
 VECTOR LOAD AND REPLICATE
 VECTOR LOAD ELEMENT
 VECTOR LOAD ELEMENT IMMEDIATE
 VECTOR LOAD GR FROM VR ELEMENT
 VECTOR LOAD LOGICAL ELEMENT AND ZERO
 VECTOR LOAD MULTIPLE
 VECTOR LOAD TO BLOCK BOUNDARY
 VECTOR LOAD VR ELEMENT FROM GR
 VECTOR LOAD VR FROM GRS DISJOINT
 VECTOR LOAD WITH LENGTH
 VECTOR MERGE HIGH
 VECTOR MERGE LOW
 VECTOR PACK
13
 VECTOR PACK SATURATE
 VECTOR PACK LOGICAL SATURATE
 VECTOR PERMUTE
 VECTOR PERMUTE DOUBLEWORD IMMEDIATE
 VECTOR REPLICATE
 VECTOR REPLICATE IMMEDIATE
 VECTOR SCATTER ELEMENT
 VECTOR SELECT
 VECTOR SIGN EXTEND TO DOUBLEWORD
 VECTOR STORE
 VECTOR STORE ELEMENT
 VECTOR STORE MULTIPLE
 VECTOR STORE WITH LENGTH
 VECTOR UNPACK HIGH
 VECTOR UNPACK LOGICAL HIGH
 VECTOR UNPACK LOW
 VECTOR UNPACK LOGICAL LOW
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais
Vector Integer (66):
 VECTOR ADD
 VECTOR ADD COMPUTE CARRY
 VECTOR ADD WITH CARRY
 VECTOR ADD WITH CARRY COMPUTE CARRY
 VECTOR AND
 VECTOR AND WITH COMPLEMENT
 VECTOR AVERAGE
 VECTOR AVERAGE LOGICAL
 VECTOR CHECKSUM
 VECTOR ELEMENT COMPARE
 VECTOR ELEMENT COMPARE LOGICAL
 VECTOR COMPARE EQUAL
 VECTOR COMPARE HIGH
 VECTOR COMPARE HIGH LOGICAL
 VECTOR COUNT LEADING ZEROS
 VECTOR COUNT TRAILING ZEROS
 VECTOR EXCLUSIVE OR
 VECTOR GALOIS FIELD MULTIPLY SUM
 VECTOR GALOIS FIELD MULTIPLY SUM AND ACCUMULATE
 VECTOR LOAD COMPLEMENT
 VECTOR LOAD POSITIVE
 VECTOR MAXIMUM
 VECTOR MAXIMUM LOGICAL
 VECTOR MINIMUM
 VECTOR MINIMUM LOGICAL
 VECTOR MULTIPLY AND ADD LOW
 VECTOR MULTIPLY AND ADD HIGH
 VECTOR MULTIPLY AND ADD LOGICAL HIGH
 VECTOR MULTIPLY AND ADD EVEN
 VECTOR MULTIPLY AND ADD LOGICAL EVEN
 VECTOR MULTIPLY AND ADD ODD
 VECTOR MULTIPLY AND ADD LOGICAL ODD
14
 VECTOR MULTIPLY HIGH
 VECTOR MULTIPLY LOGICAL HIGH
 VECTOR MULTIPLY LOW
 VECTOR MULTIPLY EVEN
 VECTOR MULTIPLY LOGICAL EVEN
 VECTOR MULTIPLY ODD
 VECTOR MULTIPLY LOGICAL ODD
 VECTOR NOR
 VECTOR OR
 VECTOR POPULATION COUNT
 VECTOR ELEMENT ROTATE LEFT LOGICAL
 VECTOR ELEMENT ROTATE AND INSERT UNDER MASK
 VECTOR ELEMENT SHIFT LEFT
 VECTOR ELEMENT SHIFT RIGHT ARITHMETIC
 VECTOR ELEMENT SHIFT RIGHT LOGICAL
 VECTOR SHIFT LEFT
 VECTOR SHIFT LEFT BY BYTE
 VECTOR SHIFT LEFT DOUBLE BY BYTE
 VECTOR SHIFT RIGHT ARITHMETIC
 VECTOR SHIFT RIGHT ARITHMETIC BY BYTE
 VECTOR SHIFT RIGHT LOGICAL
 VECTOR SHIFT RIGHT LOGICAL BY BYTE
 VECTOR SUBTRACT
 VECTOR SUBTRACT COMPUTE BORROW INDICATION
 VECTOR SUBTRACT WITH BORROW INDICATION
 VECTOR SUBTRACT WITH BORROW
 COMPUTE BORROW INDICATION
 VECTOR SUM ACROSS DOUBLEWORD
 VECTOR SUM ACROSS QUADWORD
 VECTOR SUM ACROSS WORD
 VECTOR TEST UNDER MASK
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais
Vector String (6):
 VECTOR FIND ANY ELEMENT EQUAL
 VECTOR FIND ELEMENT EQUAL
 VECTOR FIND ELEMENT NOT EQUAL
 VECTOR ISOLATE STRING
 VECTOR STRING RANGE COMPARE
15
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais
Vector Floating-Point (21):
 VECTOR FP ADD
 VECTOR FP COMPARE SCALAR
 VECTOR FP COMPARE AND SIGNAL SCALAR
 VECTOR FP COMPARE EQUAL
 VECTOR FP COMPARE HIGH
 VECTOR FP COMPARE HIGH OR EQUAL
 VECTOR FP CONVERT FROM FIXED 64-BIT
 VECTOR FP CONVERT FROM LOGICAL 64-BIT
 VECTOR FP CONVERT TO FIXED 64-BIT
 VECTOR FP CONVERT TO LOGICAL 64-BIT
 VECTOR FP DIVIDE
 VECTOR LOAD FP INTEGER
 VECTOR FP LOAD LENGTHENED
 VECTOR FP LOAD ROUNDED
 VECTOR FP MULTIPLY
 VECTOR FP MULTIPLY AND ADD
 VECTOR FP MULTIPLY AND SUBTRACT
 VECTOR FP PERFORM SIGN OPERATION
 VECTOR FP SQUARE ROOT
 VECTOR FP SUBTRACT
 VECTOR FP TEST DATA CLASS IMMEDIATE
16
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais
17
Algumas operações vetoriais executam operações saturantes.
Saturação para signed binary integers, significa que se houver
um overflow, o resultado será convertido para o maior número
positivo. Se houver um underflow, o resultado será convertido
para o maior número negativo.
Saturação para unsigned binary integers, significa que se houver
um overflow, o resultado será convertido para o maior número
representável. Se houver um underflow, o resultado será
convertido para zero.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais - exemplos
18
O Conteúdo de cada elemento do segundo operando, o registrador Vector (V2), é adicionado ao conteúdo de cada
elemento equivalente do terceiro operando, o registrador Vector (V3), e o resultado da soma é guardada no primeiro
operando, o registrador Vector (V1).
A quantidade e o tipo de elementos de cada operando (Vector Register) é determinado pelo valor especificado em M4:
Registrador VECTOR
(Vector Integer)
M4 Tamanho dos
elementos
0 Byte
1 Halfword
2 Word
3 Doubleword
4 Quadword
5-15 Reservado
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais - exemplos
19
Começando da esquerda para a direita, cada elemento do segundo operando é comparado por igualdade com cada
elemento do terceiro operando. Um primeiro resultado intermediário é criado a partir dessa comparação, com uma
indicação para cada elemento no segundo operando, se o elemento é igual a qualquer elemento no terceiro operando.
A quantidade e o tipo de elementos de cada operando (Vector Register) são determindados pelo valor especificado em M4.
O campo M5 é usado como indicador do resultado.
M4 Tamanho dos
elementos
0 Byte
1 Halfword
2 Word
3 Doubleword
4 Quadword
5-15 Reservado
(Vector String)VECTOR FIND ANY ELEMENT EQUAL
M5
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Instruções assembler vetoriais - exemplos
20
Os elementos indexados nas posiçãos pares do segundo operando (V2) , são multiplicados pelos correspondentes
elementos indexados pares do terceiro operando (V3) e os resultados individuias das multiplicaçoes de cada elemento
serão colocados nas duplas correspondentes de operandos ímpar e par do primeiro operando (V1). Na instrução VECTOR
MULTIPLY EVEN, os elementos são tratados como signed binary integers.
A quantidade e o tipo de elementos de cada operando (Vector Register) são determindado pelo valor especificado em M4.
M4 Tamanho dos
elementos
0 Byte
1 Halfword
2 Word
3 Doubleword
4 Quadword
5-15 Reservado
(Vector Integer)VECTOR MULTIPLY EVEN
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
C/C++
21
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Suporte no compilador IBM XL C/C++
22
O compilador XL C/C++ V2R1M1 para z/OS 2.1 inclui suporte à programação
utilizando recursos do Vector Facility for z/Architecture.
O compilador suporta processamento vetorial através de extensões na linguagem,
baseadas em APIs das especificações do AltiVec com algumas mudanças e extensões.
As extensões da linguagem para suporte às funções vetoriais são habilitadas
somente quando todas as seguintes condições forem satisfeitas:
 A opção ARCH(11) é especificada.
 A opção FLOAT(AFP(NOVOLATILE)) está em efeito.
 A opção VECTOR é especificada.
A publicação: z/OS XL C/C++ Programming Guide V2 R1 – SC14-7315-01, traz no
capítulo 35, todos os statements ou extensões da linguagem que exploram as
facilidades vetoriais do z13.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Suporte no compilador IBM XL C/C++
23
Variável Tipo Conteúdo Limites
vector unsigned char 16 unsigned char 0..255
vector signed char 16 signed char -128..127
vector bool char 16 unsigned char 0 (FALSE), 255 (TRUE)
vector unsigned short 8 unsigned short 0..65535
vector unsigned short int 8 signed short -32768..32767
vector signed short 8 signed short -32768..32767
vector signed short int 8 unsigned short 0 (FALSE), 65535 (TRUE)
vector bool short 8 unsigned short 0 (FALSE), 65535 (TRUE)
vector bool short int 4 unsigned int 0..232-1
vector unsigned int 4 unsigned int 0..232-1
vector signed int 4 signed int -231..231-1
vector bool int 4 unsigned int 0 (FALSE), 232-1 (TRUE)
vector unsigned long long 2 unsigned long long 0..264-1
vector signed long long 2 signed long long -263..263-1
vector bool long long 2 unsigned long long 0 (FALSE), 264-1 (TRUE)
vector double 2 double IEEE-754 double (64 bit)
precision floating-point
values
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Exemplos em XL C/C++
24
vec_mule: Vector Multiply Even
d = vec_mule(a, b)
Retorna um vetor contendo o resultado das multiplicações feitas para cada elemento par
indexado do primeiro vetor especificado e seu correspondente par do segundo vetor
especificado, retornando um valor correspondente com o dobro do tamanho dos campos
originais.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
COBOL
25
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise Cobol 5.2 for Z/OS
26
Quando especificado option ARCH (11)
Explora as novas instruções do Vector Extension Facility (SIMD) para os statements de Cobol:
• INSPECT REPLACING
• INSPECT TALLYING
• 30X mais eficiência na execução dessas instruções
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise Cobol 5.2 for Z/OS
27
INSPECT
O statement INSPECT examina caracteres ou grupos de caracteres em um data item ou “string".
• INSPECT executa os seguintes procedimentos:
Conta as occorrências de um caractere específico (alfanumerico, DBCS, ou national-UTF-16) em um data item
(formats 1 e 3).
Conta as occorrências de caracteres específicos e preenche porções ou todo o data item com caracteres
específicos, como por exemplo, espaços ou zeros (formats 2 and 3).
Converte todas as occorrências de caracteres específicos de um data item por caracteres de substituição
fornecidos pelo usuário (format 4).
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise Cobol 5.2 for Z/OS
28
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise Cobol 5.2 for Z/OS
29
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise Cobol 5.2 for Z/OS
30
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
31
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise Cobol 5.2 for Z/OS
PL/I
32
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise PL/I 4.5 for z/OS
33
z13 hardware exploitation foi implementado no compilador Enterprise PL/I for z/OS
através da opção ARCHITECTURE(11).
As otimizações proporcionam uma melhor performance para aplicações rodando no
servidor z13, sem que sejam requeridas alterações no código fonte.
Uma média de melhoria de 17% foi observada na performance em benchmarks para
programas “PL/I CPU-intensivos” quando rodando no z13 e comparando os resultados
com os mesmos testes no rodando no zEnterprise EC12.*
Obs.:
As melhorias de performance são baseadas em medidas tomadas nos laboratórios
internos da IBM, usando as opções ARCH(11) e OPT(3) do compilador.
Resultados de performance podem variar para aplicações específicas. Alguns fatores
que podem afetar a performance são: o código fonte e as opções do compilador.
*PL/I 4.5 Fact Sheet http://www-01.ibm.com/support/docview.wss?uid=swg21691853
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise PL/I 4.5 for z/OS
34
Melhorias de performance:
Quando é especificado ARCH(11), o compilador gera um código que explora as novas
instruções vetoriais, se o algorítmo ou função forem elegíveis, após a compilação, à
instruções assembler que utilizam SIMD.
As funções SEARCH e VERIFY são as que mais se beneficiam dessas novas instruções.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise PL/I 4.5 for z/OS
35
SEARCH
SEARCH retorna um valor especificando a primeira posição num string onde aparece qualquer um dos caracter, bit,
graphic ou widechar de outro string. É possível também especificar a partir de qual posição deve-se iniciar a procura.
x especifica em qual string procurar pela ocorrência de qualquer um caracter, bit, graphic ou widechar presente em y.
Se x ou y forem um null string, o resultado é zero.
Se não houver nenhuma ocorrência de y em x, o resultado será zero.
n especifica a posição dentro de x onde dever ser iniciada a procura.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise PL/I 4.5 for z/OS
36
Exemplo:
dcl Source char value(’ Our PL/I wields the Power ’);
dcl Pos fixed bin(31);
/* Find occurrences of any of the characters ’P’,’o’,or ’w’ in source * /
Pos = search (Source, ’Pow’); /* returns 6 for the ’P’ */
Pos = search (Source, ’Pow’, Pos+1); /* returns 11 for the ’w’ */
Pos = search (Source, ’Pow’, Pos+1); /* returns 22 for the ’P’ */
Pos = search (Source, ’Pow’, Pos+1); /* returns 23 for the ’o’ */
Pos = search (Source, ’Pow’, Pos+1); /* returns 24 for the ’w’ */
No examplo acima, SEARCH retorna a posição onde qualquer um dos três caracteres (‘P’,’o’ ou ‘w’) aparecem na
frase:
’ Our PL/I wields the Power ’
1 6 11 22 23 24
Pos = index (source, ’Pow’,1); /* returns 22 for the ’Pow’ */
INDEX retorna a posição onde o string completo: ‘Pow’ aparece.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise PL/I 4.5 for z/OS
37
VERIFY
VERIFY retorna um valor indicando a posição em x, do caractere, widechar, gráfico ou bit mais à esquerda que
não está em y. É possível também especificar a partir de qual posição do x deve ser procurado.
Se todos os caracteres, widechars, graphics ou bits em x estiverem em y também, será restorndo um valor de
zero.
Se x é um null string, um valor de zero é retornado. Se x não é o null string e y é o null string, o valor retornado
será o conteúdo de n .
Valor padrão de n é um.
x String
y String
n Especifica o local dentro do String onde a procura deve ser iniciada.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Enterprise PL/I 4.5 for z/OS
38
Exemplo:
X = ’_ _a b’; /* Two blanks in each space */
Y = ’ ’; /* One blank */
N = 1;
I = verify(X,Y,N); /* I = 3 */
do while (I > 0);
display ( ’Nonblank at position ’ { trim(I) );
N = I + 1;
I = verify(X,Y,N);
end;
Depois da primeira passagem pelo loop do while-end N=4 e VERIFY(X,Y,N) retorna 6.
Depois da segunda passagem, N=7 (LENGTH(x)+1), VERIFY(X,Y,N) agora retorna 0 e o loop termina.
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.
Obrigado !
39
Flavio C Buccianti
flaviocb@gmail.com
Proibida cópia ou divulgação sem
permissão escrita do CMG Brasil.

More Related Content

What's hot

Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...Joao Galdino Mello de Souza
 
ZIIP, ZAAP, ZEDC, SMT-2. EVOLUÇÃO E REVOLUÇÃO por Jorge Henrique Souza Areia...
ZIIP, ZAAP, ZEDC, SMT-2.  EVOLUÇÃO E REVOLUÇÃO por Jorge Henrique Souza Areia...ZIIP, ZAAP, ZEDC, SMT-2.  EVOLUÇÃO E REVOLUÇÃO por Jorge Henrique Souza Areia...
ZIIP, ZAAP, ZEDC, SMT-2. EVOLUÇÃO E REVOLUÇÃO por Jorge Henrique Souza Areia...Joao Galdino Mello de Souza
 
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...Joao Galdino Mello de Souza
 
Como endereçar o planejamento de capacidade em sistemas com crescimento acele...
Como endereçar o planejamento de capacidade em sistemas com crescimento acele...Como endereçar o planejamento de capacidade em sistemas com crescimento acele...
Como endereçar o planejamento de capacidade em sistemas com crescimento acele...Joao Galdino Mello de Souza
 
Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Joao Galdino Mello de Souza
 
APM: Gerenciamento de Desempenho de Aplicações - Monitoramento de rede VOIP, ...
APM: Gerenciamento de Desempenho de Aplicações - Monitoramento de rede VOIP, ...APM: Gerenciamento de Desempenho de Aplicações - Monitoramento de rede VOIP, ...
APM: Gerenciamento de Desempenho de Aplicações - Monitoramento de rede VOIP, ...Joao Galdino Mello de Souza
 
Abordagens de Implementação de ILM como estratégia auxiliar no Gerenciamento ...
Abordagens de Implementação de ILM como estratégia auxiliar no Gerenciamento ...Abordagens de Implementação de ILM como estratégia auxiliar no Gerenciamento ...
Abordagens de Implementação de ILM como estratégia auxiliar no Gerenciamento ...Joao Galdino Mello de Souza
 

What's hot (12)

Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
Análise de Capacidade e Desempenho em sistemas online utilizando no conceito ...
 
ZIIP, ZAAP, ZEDC, SMT-2. EVOLUÇÃO E REVOLUÇÃO por Jorge Henrique Souza Areia...
ZIIP, ZAAP, ZEDC, SMT-2.  EVOLUÇÃO E REVOLUÇÃO por Jorge Henrique Souza Areia...ZIIP, ZAAP, ZEDC, SMT-2.  EVOLUÇÃO E REVOLUÇÃO por Jorge Henrique Souza Areia...
ZIIP, ZAAP, ZEDC, SMT-2. EVOLUÇÃO E REVOLUÇÃO por Jorge Henrique Souza Areia...
 
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
Estudo de Planejamento e Performance na consolidação de CECs Mainframe. Gusta...
 
Como endereçar o planejamento de capacidade em sistemas com crescimento acele...
Como endereçar o planejamento de capacidade em sistemas com crescimento acele...Como endereçar o planejamento de capacidade em sistemas com crescimento acele...
Como endereçar o planejamento de capacidade em sistemas com crescimento acele...
 
Automação do Workload e a TI Bimodal
Automação do Workload e a TI BimodalAutomação do Workload e a TI Bimodal
Automação do Workload e a TI Bimodal
 
Ko 7 kdp-02
Ko 7 kdp-02Ko 7 kdp-02
Ko 7 kdp-02
 
Configuração
ConfiguraçãoConfiguração
Configuração
 
Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)Modelagem Analítica – Queueing Theory (Part I)
Modelagem Analítica – Queueing Theory (Part I)
 
Ko 7 kdp-05
Ko 7 kdp-05Ko 7 kdp-05
Ko 7 kdp-05
 
APM: Gerenciamento de Desempenho de Aplicações - Monitoramento de rede VOIP, ...
APM: Gerenciamento de Desempenho de Aplicações - Monitoramento de rede VOIP, ...APM: Gerenciamento de Desempenho de Aplicações - Monitoramento de rede VOIP, ...
APM: Gerenciamento de Desempenho de Aplicações - Monitoramento de rede VOIP, ...
 
Profibus s7
Profibus s7Profibus s7
Profibus s7
 
Abordagens de Implementação de ILM como estratégia auxiliar no Gerenciamento ...
Abordagens de Implementação de ILM como estratégia auxiliar no Gerenciamento ...Abordagens de Implementação de ILM como estratégia auxiliar no Gerenciamento ...
Abordagens de Implementação de ILM como estratégia auxiliar no Gerenciamento ...
 

Viewers also liked

Z13 x zEC12: O que esperar? - por Luiz Carlos Orsoni
Z13 x zEC12: O que esperar? - por Luiz Carlos OrsoniZ13 x zEC12: O que esperar? - por Luiz Carlos Orsoni
Z13 x zEC12: O que esperar? - por Luiz Carlos OrsoniJoao Galdino Mello de Souza
 
Uso de Qualidade de serviço em uma rede de dados em um sistema supervisório. ...
Uso de Qualidade de serviço em uma rede de dados em um sistema supervisório. ...Uso de Qualidade de serviço em uma rede de dados em um sistema supervisório. ...
Uso de Qualidade de serviço em uma rede de dados em um sistema supervisório. ...Joao Galdino Mello de Souza
 
7 opportunities to reduce wlc costs - por Danilo
7 opportunities to reduce wlc costs - por Danilo7 opportunities to reduce wlc costs - por Danilo
7 opportunities to reduce wlc costs - por DaniloJoao Galdino Mello de Souza
 
Conceitos de Capacity Planning e Sysplex por Fernando Ferreira
Conceitos de Capacity Planning e Sysplex por Fernando FerreiraConceitos de Capacity Planning e Sysplex por Fernando Ferreira
Conceitos de Capacity Planning e Sysplex por Fernando FerreiraJoao Galdino Mello de Souza
 
CPUMF: O que é, como implementar, o que inferir por Luiz Carlos Orsoni
CPUMF: O que é, como implementar, o que inferir por Luiz Carlos OrsoniCPUMF: O que é, como implementar, o que inferir por Luiz Carlos Orsoni
CPUMF: O que é, como implementar, o que inferir por Luiz Carlos OrsoniJoao Galdino Mello de Souza
 
z/VM 6.3 - Mudanças de Comportamento do hypervisor para suporte de partições ...
z/VM 6.3 - Mudanças de Comportamento do hypervisor para suporte de partições ...z/VM 6.3 - Mudanças de Comportamento do hypervisor para suporte de partições ...
z/VM 6.3 - Mudanças de Comportamento do hypervisor para suporte de partições ...Joao Galdino Mello de Souza
 
Modernização do Gerenciamento, Monitoramento e Provisionamento em Mainframes ...
Modernização do Gerenciamento, Monitoramento e Provisionamento em Mainframes ...Modernização do Gerenciamento, Monitoramento e Provisionamento em Mainframes ...
Modernização do Gerenciamento, Monitoramento e Provisionamento em Mainframes ...Joao Galdino Mello de Souza
 
Novidades e complicações em Capacity Planning e Capacity Pricing - por Fernan...
Novidades e complicações em Capacity Planning e Capacity Pricing - por Fernan...Novidades e complicações em Capacity Planning e Capacity Pricing - por Fernan...
Novidades e complicações em Capacity Planning e Capacity Pricing - por Fernan...Joao Galdino Mello de Souza
 
Novidades interessantes e importantes do z/os 2.2
Novidades interessantes e importantes do z/os 2.2Novidades interessantes e importantes do z/os 2.2
Novidades interessantes e importantes do z/os 2.2Joao Galdino Mello de Souza
 
Análise de Segurança e Desempenho na Detecção de Intrusão em Redes de Automaç...
Análise de Segurança e Desempenho na Detecção de Intrusão em Redes de Automaç...Análise de Segurança e Desempenho na Detecção de Intrusão em Redes de Automaç...
Análise de Segurança e Desempenho na Detecção de Intrusão em Redes de Automaç...Joao Galdino Mello de Souza
 
Falando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliFalando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliJoao Galdino Mello de Souza
 
Como configurar seu zSystem para workloads rebeldes
Como configurar seu zSystem para workloads rebeldesComo configurar seu zSystem para workloads rebeldes
Como configurar seu zSystem para workloads rebeldesJoao Galdino Mello de Souza
 
Plano de Capacidade e Desempenho com geração de indicadores – por Erlon Marcu...
Plano de Capacidade e Desempenho com geração de indicadores – por Erlon Marcu...Plano de Capacidade e Desempenho com geração de indicadores – por Erlon Marcu...
Plano de Capacidade e Desempenho com geração de indicadores – por Erlon Marcu...Joao Galdino Mello de Souza
 

Viewers also liked (14)

Z13 x zEC12: O que esperar? - por Luiz Carlos Orsoni
Z13 x zEC12: O que esperar? - por Luiz Carlos OrsoniZ13 x zEC12: O que esperar? - por Luiz Carlos Orsoni
Z13 x zEC12: O que esperar? - por Luiz Carlos Orsoni
 
Auditoria em Mainframe. (Eugênio Fernandes)
Auditoria em Mainframe. (Eugênio Fernandes)Auditoria em Mainframe. (Eugênio Fernandes)
Auditoria em Mainframe. (Eugênio Fernandes)
 
Uso de Qualidade de serviço em uma rede de dados em um sistema supervisório. ...
Uso de Qualidade de serviço em uma rede de dados em um sistema supervisório. ...Uso de Qualidade de serviço em uma rede de dados em um sistema supervisório. ...
Uso de Qualidade de serviço em uma rede de dados em um sistema supervisório. ...
 
7 opportunities to reduce wlc costs - por Danilo
7 opportunities to reduce wlc costs - por Danilo7 opportunities to reduce wlc costs - por Danilo
7 opportunities to reduce wlc costs - por Danilo
 
Conceitos de Capacity Planning e Sysplex por Fernando Ferreira
Conceitos de Capacity Planning e Sysplex por Fernando FerreiraConceitos de Capacity Planning e Sysplex por Fernando Ferreira
Conceitos de Capacity Planning e Sysplex por Fernando Ferreira
 
CPUMF: O que é, como implementar, o que inferir por Luiz Carlos Orsoni
CPUMF: O que é, como implementar, o que inferir por Luiz Carlos OrsoniCPUMF: O que é, como implementar, o que inferir por Luiz Carlos Orsoni
CPUMF: O que é, como implementar, o que inferir por Luiz Carlos Orsoni
 
z/VM 6.3 - Mudanças de Comportamento do hypervisor para suporte de partições ...
z/VM 6.3 - Mudanças de Comportamento do hypervisor para suporte de partições ...z/VM 6.3 - Mudanças de Comportamento do hypervisor para suporte de partições ...
z/VM 6.3 - Mudanças de Comportamento do hypervisor para suporte de partições ...
 
Modernização do Gerenciamento, Monitoramento e Provisionamento em Mainframes ...
Modernização do Gerenciamento, Monitoramento e Provisionamento em Mainframes ...Modernização do Gerenciamento, Monitoramento e Provisionamento em Mainframes ...
Modernização do Gerenciamento, Monitoramento e Provisionamento em Mainframes ...
 
Novidades e complicações em Capacity Planning e Capacity Pricing - por Fernan...
Novidades e complicações em Capacity Planning e Capacity Pricing - por Fernan...Novidades e complicações em Capacity Planning e Capacity Pricing - por Fernan...
Novidades e complicações em Capacity Planning e Capacity Pricing - por Fernan...
 
Novidades interessantes e importantes do z/os 2.2
Novidades interessantes e importantes do z/os 2.2Novidades interessantes e importantes do z/os 2.2
Novidades interessantes e importantes do z/os 2.2
 
Análise de Segurança e Desempenho na Detecção de Intrusão em Redes de Automaç...
Análise de Segurança e Desempenho na Detecção de Intrusão em Redes de Automaç...Análise de Segurança e Desempenho na Detecção de Intrusão em Redes de Automaç...
Análise de Segurança e Desempenho na Detecção de Intrusão em Redes de Automaç...
 
Falando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro GrezeliFalando de Testes de Desempenho - por Evandro Grezeli
Falando de Testes de Desempenho - por Evandro Grezeli
 
Como configurar seu zSystem para workloads rebeldes
Como configurar seu zSystem para workloads rebeldesComo configurar seu zSystem para workloads rebeldes
Como configurar seu zSystem para workloads rebeldes
 
Plano de Capacidade e Desempenho com geração de indicadores – por Erlon Marcu...
Plano de Capacidade e Desempenho com geração de indicadores – por Erlon Marcu...Plano de Capacidade e Desempenho com geração de indicadores – por Erlon Marcu...
Plano de Capacidade e Desempenho com geração de indicadores – por Erlon Marcu...
 

Similar to SIMD no z13 - Conhecendo as novas funções Vetoriais do Mainframe por Flavio Buccianti

Acelerando suas aplicações com o novíssimo Vector Packed Decimal Facility do ...
Acelerando suas aplicações com o novíssimo Vector Packed Decimal Facility do ...Acelerando suas aplicações com o novíssimo Vector Packed Decimal Facility do ...
Acelerando suas aplicações com o novíssimo Vector Packed Decimal Facility do ...Joao Galdino Mello de Souza
 
Webinar: Uma introdução a ISA RISC-V e seu ecossistema
Webinar: Uma introdução a ISA RISC-V e seu ecossistemaWebinar: Uma introdução a ISA RISC-V e seu ecossistema
Webinar: Uma introdução a ISA RISC-V e seu ecossistemaEmbarcados
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosRodrigo Almeida
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoIntel Software Brasil
 
Webinar: Aplicando a LoRaONE DevBoard nos seus projetos de IoT
Webinar: Aplicando a LoRaONE DevBoard nos seus projetos de IoTWebinar: Aplicando a LoRaONE DevBoard nos seus projetos de IoT
Webinar: Aplicando a LoRaONE DevBoard nos seus projetos de IoTEmbarcados
 
Webinar: RISC-V: Novidades de 2020
Webinar: RISC-V: Novidades de 2020Webinar: RISC-V: Novidades de 2020
Webinar: RISC-V: Novidades de 2020Embarcados
 
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Armando Alaminos Bouza
 
2° estuda ControlLogix Motion.ppt
2° estuda ControlLogix Motion.ppt2° estuda ControlLogix Motion.ppt
2° estuda ControlLogix Motion.pptjulyocarlos
 
Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Intel Software Brasil
 
3º Workshop Robtec MG - Digitalizacao aplicada a Manufatura Virtual
3º Workshop Robtec MG - Digitalizacao aplicada a Manufatura Virtual3º Workshop Robtec MG - Digitalizacao aplicada a Manufatura Virtual
3º Workshop Robtec MG - Digitalizacao aplicada a Manufatura VirtualRobtec
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadoshenriqueprossi
 
Codificando e-magazine11
Codificando e-magazine11Codificando e-magazine11
Codificando e-magazine11Marcos Paulo
 
Arquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PICArquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PICAlexandre Brandão Lustosa
 

Similar to SIMD no z13 - Conhecendo as novas funções Vetoriais do Mainframe por Flavio Buccianti (20)

Acelerando suas aplicações com o novíssimo Vector Packed Decimal Facility do ...
Acelerando suas aplicações com o novíssimo Vector Packed Decimal Facility do ...Acelerando suas aplicações com o novíssimo Vector Packed Decimal Facility do ...
Acelerando suas aplicações com o novíssimo Vector Packed Decimal Facility do ...
 
Webinar: Uma introdução a ISA RISC-V e seu ecossistema
Webinar: Uma introdução a ISA RISC-V e seu ecossistemaWebinar: Uma introdução a ISA RISC-V e seu ecossistema
Webinar: Uma introdução a ISA RISC-V e seu ecossistema
 
Display de 7 segmentos multiplexados
Display de 7 segmentos multiplexadosDisplay de 7 segmentos multiplexados
Display de 7 segmentos multiplexados
 
Principais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorizaçãoPrincipais conceitos e técnicas em vetorização
Principais conceitos e técnicas em vetorização
 
Operações com Bits
Operações com BitsOperações com Bits
Operações com Bits
 
8085 2
8085 28085 2
8085 2
 
Webinar: Aplicando a LoRaONE DevBoard nos seus projetos de IoT
Webinar: Aplicando a LoRaONE DevBoard nos seus projetos de IoTWebinar: Aplicando a LoRaONE DevBoard nos seus projetos de IoT
Webinar: Aplicando a LoRaONE DevBoard nos seus projetos de IoT
 
Webinar: RISC-V: Novidades de 2020
Webinar: RISC-V: Novidades de 2020Webinar: RISC-V: Novidades de 2020
Webinar: RISC-V: Novidades de 2020
 
Realidade Aumentada
Realidade AumentadaRealidade Aumentada
Realidade Aumentada
 
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
Curso CAT3D 2015 - Resumo das noviades entre 2014 e 2015
 
2° estuda ControlLogix Motion.ppt
2° estuda ControlLogix Motion.ppt2° estuda ControlLogix Motion.ppt
2° estuda ControlLogix Motion.ppt
 
2 manual - clp pic40-v3
2 manual - clp pic40-v32 manual - clp pic40-v3
2 manual - clp pic40-v3
 
Vc80
Vc80Vc80
Vc80
 
Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013Vetorização e Otimização de Código - Intel Software Conference 2013
Vetorização e Otimização de Código - Intel Software Conference 2013
 
3º Workshop Robtec MG - Digitalizacao aplicada a Manufatura Virtual
3º Workshop Robtec MG - Digitalizacao aplicada a Manufatura Virtual3º Workshop Robtec MG - Digitalizacao aplicada a Manufatura Virtual
3º Workshop Robtec MG - Digitalizacao aplicada a Manufatura Virtual
 
Codificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcadosCodificação segura em C para sistemas embarcados
Codificação segura em C para sistemas embarcados
 
Pro2 01p
Pro2 01pPro2 01p
Pro2 01p
 
Codificando e-magazine11
Codificando e-magazine11Codificando e-magazine11
Codificando e-magazine11
 
Arquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PICArquitetura de Microcontroladores Microchip PIC
Arquitetura de Microcontroladores Microchip PIC
 
Stoe 14 p
Stoe 14 pStoe 14 p
Stoe 14 p
 

More from Joao Galdino Mello de Souza

Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Joao Galdino Mello de Souza
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Joao Galdino Mello de Souza
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Joao Galdino Mello de Souza
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Joao Galdino Mello de Souza
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Joao Galdino Mello de Souza
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Joao Galdino Mello de Souza
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Joao Galdino Mello de Souza
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Joao Galdino Mello de Souza
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Joao Galdino Mello de Souza
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Joao Galdino Mello de Souza
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Joao Galdino Mello de Souza
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Joao Galdino Mello de Souza
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Joao Galdino Mello de Souza
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Joao Galdino Mello de Souza
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Joao Galdino Mello de Souza
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Joao Galdino Mello de Souza
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Joao Galdino Mello de Souza
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Joao Galdino Mello de Souza
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)Joao Galdino Mello de Souza
 

More from Joao Galdino Mello de Souza (20)

Explorando a API Rest Jira Cloud
Explorando a API Rest Jira CloudExplorando a API Rest Jira Cloud
Explorando a API Rest Jira Cloud
 
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)Enterprise computing for modern business workloads por Lívio Sousa (IBM)
Enterprise computing for modern business workloads por Lívio Sousa (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI) e Fernando Ferreira (IBM)
 
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...Scaling  Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
Scaling Multi-cloud with Infrastructure as Code por André Rocha Agostinho (S...
 
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
Alta Disponibilidade SQL Server por Marcus Vinicius Bittencourt (O Boticário)
 
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
Cloud no Banco Votorantim por Marcus Vinícius de Aguiar Magalhaes (Banco Voto...
 
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
Descomplicando a Ciência de Dados por Adelson Lovatto (IBM)
 
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
Pré-Anúncio z/OS 2.4 por Alvaro Salla (MAFFEI)
 
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
Consumo de CPU, Distorções e Redução de custo de SW por Maria Isabel Soutello...
 
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
Qualidade no desenvolvimento de Sistemas por Anderson Augustinho (Celepar)
 
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
Assets Tokenization: Novas Linhas de negócio por Lívio Sousa (IBM)
 
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
Intelligent Edge e Intelligent Cloud por Vivian Heinrichs (Softline)
 
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
Evolução da eficiência operacional no mainframe por Emerson Castelano (Eccox)
 
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
Gestão de Capacidade, desempenho e custos no ambiente mainframe zOS: Um caso ...
 
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
Eletricidade e Eletrônica 1.01 por Luiz Carlos Orsoni (MAFFEI)
 
Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)Pervasive Encryption por Eugênio Fernandes (IBM)
Pervasive Encryption por Eugênio Fernandes (IBM)
 
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
Minimizar RNI ambiente CICS por Milton Ferraraccio (Eccox Technology)
 
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
Scaling Multi-Cloud with Infrastructure as a Code por André Rocha Agostinho (...
 
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
Como obter o melhor do Z por Gustavo Fernandes Araujo (Itau Unibanco)
 
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)Lei geral de proteção de dados por Kleber Silva  e Ricardo Navarro (Pise4)
Lei geral de proteção de dados por Kleber Silva e Ricardo Navarro (Pise4)
 

SIMD no z13 - Conhecendo as novas funções Vetoriais do Mainframe por Flavio Buccianti

  • 1. SIMD no z13 – Conhecendo as novas funções Vetoriais do Mainframe. ©2015 Flavio C Buccianti 1 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 2. Tecnologia anunciada no z13 Em Janeiro de 2015 foi anunciada a máquina z Systems z13, o novo Mainframe da IBM. Entre outras novidades foi anunciada a capacidade de processamento vetorial  Processamento vetorial, possibilitando instruções tipo SIMD • Suporte nativo pelos processadores da máquina  Máximo de 141 processadores configuráveis  Máximo de 10 TB de memória  Cloud, Mobile, Analytics e Big Data 2 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 3. Tecnologia anunciada no z13  Entre outras novidades, foi anunciada a capacidade de processamento vetorial  SIMD – Single Instruction Multiple Data • Permite que vários dados compartilhem um mesmo operando para operações lógicas e aritméticas.  139 novas instruções Vetoriais • Vector Support • Vector Integer • Vector FP • Vector String  32 registradores vetoriais • 0 a 15 são compartilhados com operações simples de ponto flutuante • 16 a 31 são Vetoriais dedicados 3 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 4. AltiVec AltiVec é um conjunto de instruções vetoriais/SIMD que manipulam tanto números de ponto flutuante quanto inteiros. Desenhadas entre 1996 e 1998 em conjunto pela Apple, IBM e Freescale (ex-Motorola semiconductor). A Apple foi a primeira usuária quando seus computadores usavam a plataforma Power G5. Usado para multimídia, para aceleração de gráficos e vídeos. A Adobe usou esses recursos para otimizar o processamento de imagens do Adobe Photoshop rodando em Mac OSx para POWER. A Sony lançou o Playstation 3 utilizando processadores Cell cujo interior é formado por um processador PowerPC (PPE) e mais oito processadores sinergísticos (SPE), capazes de executar instruções vetoriais e SIMD, acelerando a execução de cálculos e manuseio de gráficos. Este processador também contém a tecnologia AltiVec. O Novo processador do Z13, implementa o conceito do AltiVec com algumas mudanças e extensões (IBM Z/OS XL C/C++ 2.11 Programming Guide pp. 553 - SC14-7315-01). 4 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 5. Operação Scalar 5 8 12 5 33 10 10 9 27 12 21 1 0 5 33 1 22 20 33 6 33 15 43 10 49 + + + + + + + + = = = = = = = = t t+1 t+2 t+3 t+4 t+5 t+6 t+7 Operação Scalar (não vetorial e não SIMD) Na operação Scalar, os elementos são individuias. Para executar a soma desse conjunto, devem-se somar os elementos aos pares (A + B) e guardar o resultado num terceiro elemento ( C ) . No exemplo acima, seriam usados 8 ciclos onde em cada ciclo, seria necessário carregar o elemento A, carregar o elemento B efetuar a soma e guardar o resultado no elemento C. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 6. SIMD – Single Instruction Multiple Data 6 A1 A2 A3 A4 A5 A6 A7 A8 B1 B2 B3 B4 B5 B6 B7 B8 C1 C2 C3 C4 C5 C6 C7 C8 + = Vetor 1 Vetor 2 Vetor 3 Com a tecnologia vetorial, é possível colocar vários elementos dentro de um registrador vetorial e continuar a mante-los isolados entre sí. t Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 7. SIMD – Single Instruction Multiple Data 7 8 12 5 33 10 10 9 27 12 21 1 0 5 33 1 22 20 33 6 33 15 43 10 49 + = Vetor 1 Vetor 2 Vetor 3 Os dados do Vetor 1 são carregados numa operação só; idem para o Vetor 2. A soma ocorrerá numa única operação (t). No final da operação, o Vetor 3 terá o conteúdo da soma de Vetor 1 + Vetor 2 e os números resultantes continuarão isolados entre sí. t Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 8. 8 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. Slide extraído da apresentação IBM: z13: End-to-end Mobile,Analytics and Cloud PlatformSession B01 / A10 Walter Klaey/ walter.klaey@ch.ibm.com Europe IMS SWAT Team IMS Technical Symposium 2015 - 16/3/2015
  • 9. Registradores vetoriais FP 0 or VR 0 (bits 0-63) VR 0 (bits 64-127) FP 1 or VR 1 (bits 0-63) VR 1 (bits 64-127) FP 2 or VR 2 (bits 0-63) VR 2 (bits 64-127) FP 3 or VR 3 (bits 0-63) VR 3 (bits 64-127) FP 4 or VR 4 (bits 0-63) VR 4 (bits 64-127) FP 5 or VR 5 (bits 0-63) VR 5 (bits 64-127) FP 6 or VR 6 (bits 0-63) VR 6 (bits 64-127) FP 7 or VR 7 (bits 0-63) VR 7 (bits 64-127) FP 8 or VR 8 (bits 0-63) VR 8 (bits 64-127) FP 9 or VR 9 (bits 0-63) VR 9 (bits 64-127) FP 10 or VR 10 (bits 0-63) VR 10 (bits 64-127) FP 11 or VR 11 (bits 0-63) VR 11 (bits 64-127) FP 12 or VR 12 (bits 0-63) VR 12 (bits 64-127) FP 13 or VR 13 (bits 0-63) VR 13 (bits 64-127) FP 14 or VR 14 (bits 0-63) VR 14 (bits 64-127) FP 15 or VR 15 (bits 0-63) VR 15 (bits 64-127) VR 16 (bits 0 -127) VR 17 (bits 0 -127) VR 18 (bits 0 -127) VR 19 (bits 0 -127) VR 20 (bits 0 -127) VR 21 (bits 0 -127) VR 22 (bits 0 -127) VR 23 (bits 0 -127) VR 24 (bits 0 -127) VR 25 (bits 0 -127) VR 26 (bits 0 -127) VR 27 (bits 0 -127) VR 28 (bits 0 -127) VR 29 (bits 0 -127) VR 30 (bits 0 -127) VR 31 (bits 0 -127) 0 15 31 Vetoriais compartilhados com Registradores FP Vetoriais dedicados 9Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 10. Registradores vetoriais Formato e posição dos dados nos registradores vetoriais para operações SIMD 10 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 11. Instruções assembler vetoriais As 139 instruções Vector podem ser classificadas em quatro grupos: • Vector Support Instructions (46): fazem operações do tipo gather, generate mask, load, merge, pack, permute, replicate, scatter, select, sign, store e unpack. • Vector Integer (66): fazem operações do tipo add, and, average, checksum, element compare, compare, count, xor, galois field, load, maximum, multiply, nor, or, population count, rotate, shift, subtract, sum e test under mask. • Vector String (6): possibilita a aceleração do processamento de strings com dados tipo character. As operações são do tipo find, isolate e string range compare. Total de 6 instruções • Vector Floating-Point (21): fazem operações do tipo add, compare, convert, divide, load, multiply, perform sign operation, square root, subtract e test data. • O manual z/Architecture Principles of Operation – SA22-7832-10, conhecido como “POP”, traz nos capítulos 21 a 24, a descrição detalhada de todas as instruções vetoriais. 11 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 12. Assembler 12 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 13. Instruções assembler vetoriais Vector Support Instructions (46):  VECTOR GATHER ELEMENT  VECTOR GENERATE BYTE MASK  VECTOR GENERATE MASK  VECTOR LOAD  VECTOR LOAD AND REPLICATE  VECTOR LOAD ELEMENT  VECTOR LOAD ELEMENT IMMEDIATE  VECTOR LOAD GR FROM VR ELEMENT  VECTOR LOAD LOGICAL ELEMENT AND ZERO  VECTOR LOAD MULTIPLE  VECTOR LOAD TO BLOCK BOUNDARY  VECTOR LOAD VR ELEMENT FROM GR  VECTOR LOAD VR FROM GRS DISJOINT  VECTOR LOAD WITH LENGTH  VECTOR MERGE HIGH  VECTOR MERGE LOW  VECTOR PACK 13  VECTOR PACK SATURATE  VECTOR PACK LOGICAL SATURATE  VECTOR PERMUTE  VECTOR PERMUTE DOUBLEWORD IMMEDIATE  VECTOR REPLICATE  VECTOR REPLICATE IMMEDIATE  VECTOR SCATTER ELEMENT  VECTOR SELECT  VECTOR SIGN EXTEND TO DOUBLEWORD  VECTOR STORE  VECTOR STORE ELEMENT  VECTOR STORE MULTIPLE  VECTOR STORE WITH LENGTH  VECTOR UNPACK HIGH  VECTOR UNPACK LOGICAL HIGH  VECTOR UNPACK LOW  VECTOR UNPACK LOGICAL LOW Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 14. Instruções assembler vetoriais Vector Integer (66):  VECTOR ADD  VECTOR ADD COMPUTE CARRY  VECTOR ADD WITH CARRY  VECTOR ADD WITH CARRY COMPUTE CARRY  VECTOR AND  VECTOR AND WITH COMPLEMENT  VECTOR AVERAGE  VECTOR AVERAGE LOGICAL  VECTOR CHECKSUM  VECTOR ELEMENT COMPARE  VECTOR ELEMENT COMPARE LOGICAL  VECTOR COMPARE EQUAL  VECTOR COMPARE HIGH  VECTOR COMPARE HIGH LOGICAL  VECTOR COUNT LEADING ZEROS  VECTOR COUNT TRAILING ZEROS  VECTOR EXCLUSIVE OR  VECTOR GALOIS FIELD MULTIPLY SUM  VECTOR GALOIS FIELD MULTIPLY SUM AND ACCUMULATE  VECTOR LOAD COMPLEMENT  VECTOR LOAD POSITIVE  VECTOR MAXIMUM  VECTOR MAXIMUM LOGICAL  VECTOR MINIMUM  VECTOR MINIMUM LOGICAL  VECTOR MULTIPLY AND ADD LOW  VECTOR MULTIPLY AND ADD HIGH  VECTOR MULTIPLY AND ADD LOGICAL HIGH  VECTOR MULTIPLY AND ADD EVEN  VECTOR MULTIPLY AND ADD LOGICAL EVEN  VECTOR MULTIPLY AND ADD ODD  VECTOR MULTIPLY AND ADD LOGICAL ODD 14  VECTOR MULTIPLY HIGH  VECTOR MULTIPLY LOGICAL HIGH  VECTOR MULTIPLY LOW  VECTOR MULTIPLY EVEN  VECTOR MULTIPLY LOGICAL EVEN  VECTOR MULTIPLY ODD  VECTOR MULTIPLY LOGICAL ODD  VECTOR NOR  VECTOR OR  VECTOR POPULATION COUNT  VECTOR ELEMENT ROTATE LEFT LOGICAL  VECTOR ELEMENT ROTATE AND INSERT UNDER MASK  VECTOR ELEMENT SHIFT LEFT  VECTOR ELEMENT SHIFT RIGHT ARITHMETIC  VECTOR ELEMENT SHIFT RIGHT LOGICAL  VECTOR SHIFT LEFT  VECTOR SHIFT LEFT BY BYTE  VECTOR SHIFT LEFT DOUBLE BY BYTE  VECTOR SHIFT RIGHT ARITHMETIC  VECTOR SHIFT RIGHT ARITHMETIC BY BYTE  VECTOR SHIFT RIGHT LOGICAL  VECTOR SHIFT RIGHT LOGICAL BY BYTE  VECTOR SUBTRACT  VECTOR SUBTRACT COMPUTE BORROW INDICATION  VECTOR SUBTRACT WITH BORROW INDICATION  VECTOR SUBTRACT WITH BORROW  COMPUTE BORROW INDICATION  VECTOR SUM ACROSS DOUBLEWORD  VECTOR SUM ACROSS QUADWORD  VECTOR SUM ACROSS WORD  VECTOR TEST UNDER MASK Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 15. Instruções assembler vetoriais Vector String (6):  VECTOR FIND ANY ELEMENT EQUAL  VECTOR FIND ELEMENT EQUAL  VECTOR FIND ELEMENT NOT EQUAL  VECTOR ISOLATE STRING  VECTOR STRING RANGE COMPARE 15 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 16. Instruções assembler vetoriais Vector Floating-Point (21):  VECTOR FP ADD  VECTOR FP COMPARE SCALAR  VECTOR FP COMPARE AND SIGNAL SCALAR  VECTOR FP COMPARE EQUAL  VECTOR FP COMPARE HIGH  VECTOR FP COMPARE HIGH OR EQUAL  VECTOR FP CONVERT FROM FIXED 64-BIT  VECTOR FP CONVERT FROM LOGICAL 64-BIT  VECTOR FP CONVERT TO FIXED 64-BIT  VECTOR FP CONVERT TO LOGICAL 64-BIT  VECTOR FP DIVIDE  VECTOR LOAD FP INTEGER  VECTOR FP LOAD LENGTHENED  VECTOR FP LOAD ROUNDED  VECTOR FP MULTIPLY  VECTOR FP MULTIPLY AND ADD  VECTOR FP MULTIPLY AND SUBTRACT  VECTOR FP PERFORM SIGN OPERATION  VECTOR FP SQUARE ROOT  VECTOR FP SUBTRACT  VECTOR FP TEST DATA CLASS IMMEDIATE 16 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 17. Instruções assembler vetoriais 17 Algumas operações vetoriais executam operações saturantes. Saturação para signed binary integers, significa que se houver um overflow, o resultado será convertido para o maior número positivo. Se houver um underflow, o resultado será convertido para o maior número negativo. Saturação para unsigned binary integers, significa que se houver um overflow, o resultado será convertido para o maior número representável. Se houver um underflow, o resultado será convertido para zero. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 18. Instruções assembler vetoriais - exemplos 18 O Conteúdo de cada elemento do segundo operando, o registrador Vector (V2), é adicionado ao conteúdo de cada elemento equivalente do terceiro operando, o registrador Vector (V3), e o resultado da soma é guardada no primeiro operando, o registrador Vector (V1). A quantidade e o tipo de elementos de cada operando (Vector Register) é determinado pelo valor especificado em M4: Registrador VECTOR (Vector Integer) M4 Tamanho dos elementos 0 Byte 1 Halfword 2 Word 3 Doubleword 4 Quadword 5-15 Reservado Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 19. Instruções assembler vetoriais - exemplos 19 Começando da esquerda para a direita, cada elemento do segundo operando é comparado por igualdade com cada elemento do terceiro operando. Um primeiro resultado intermediário é criado a partir dessa comparação, com uma indicação para cada elemento no segundo operando, se o elemento é igual a qualquer elemento no terceiro operando. A quantidade e o tipo de elementos de cada operando (Vector Register) são determindados pelo valor especificado em M4. O campo M5 é usado como indicador do resultado. M4 Tamanho dos elementos 0 Byte 1 Halfword 2 Word 3 Doubleword 4 Quadword 5-15 Reservado (Vector String)VECTOR FIND ANY ELEMENT EQUAL M5 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 20. Instruções assembler vetoriais - exemplos 20 Os elementos indexados nas posiçãos pares do segundo operando (V2) , são multiplicados pelos correspondentes elementos indexados pares do terceiro operando (V3) e os resultados individuias das multiplicaçoes de cada elemento serão colocados nas duplas correspondentes de operandos ímpar e par do primeiro operando (V1). Na instrução VECTOR MULTIPLY EVEN, os elementos são tratados como signed binary integers. A quantidade e o tipo de elementos de cada operando (Vector Register) são determindado pelo valor especificado em M4. M4 Tamanho dos elementos 0 Byte 1 Halfword 2 Word 3 Doubleword 4 Quadword 5-15 Reservado (Vector Integer)VECTOR MULTIPLY EVEN Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 21. C/C++ 21 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 22. Suporte no compilador IBM XL C/C++ 22 O compilador XL C/C++ V2R1M1 para z/OS 2.1 inclui suporte à programação utilizando recursos do Vector Facility for z/Architecture. O compilador suporta processamento vetorial através de extensões na linguagem, baseadas em APIs das especificações do AltiVec com algumas mudanças e extensões. As extensões da linguagem para suporte às funções vetoriais são habilitadas somente quando todas as seguintes condições forem satisfeitas:  A opção ARCH(11) é especificada.  A opção FLOAT(AFP(NOVOLATILE)) está em efeito.  A opção VECTOR é especificada. A publicação: z/OS XL C/C++ Programming Guide V2 R1 – SC14-7315-01, traz no capítulo 35, todos os statements ou extensões da linguagem que exploram as facilidades vetoriais do z13. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 23. Suporte no compilador IBM XL C/C++ 23 Variável Tipo Conteúdo Limites vector unsigned char 16 unsigned char 0..255 vector signed char 16 signed char -128..127 vector bool char 16 unsigned char 0 (FALSE), 255 (TRUE) vector unsigned short 8 unsigned short 0..65535 vector unsigned short int 8 signed short -32768..32767 vector signed short 8 signed short -32768..32767 vector signed short int 8 unsigned short 0 (FALSE), 65535 (TRUE) vector bool short 8 unsigned short 0 (FALSE), 65535 (TRUE) vector bool short int 4 unsigned int 0..232-1 vector unsigned int 4 unsigned int 0..232-1 vector signed int 4 signed int -231..231-1 vector bool int 4 unsigned int 0 (FALSE), 232-1 (TRUE) vector unsigned long long 2 unsigned long long 0..264-1 vector signed long long 2 signed long long -263..263-1 vector bool long long 2 unsigned long long 0 (FALSE), 264-1 (TRUE) vector double 2 double IEEE-754 double (64 bit) precision floating-point values Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 24. Exemplos em XL C/C++ 24 vec_mule: Vector Multiply Even d = vec_mule(a, b) Retorna um vetor contendo o resultado das multiplicações feitas para cada elemento par indexado do primeiro vetor especificado e seu correspondente par do segundo vetor especificado, retornando um valor correspondente com o dobro do tamanho dos campos originais. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 25. COBOL 25 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 26. Enterprise Cobol 5.2 for Z/OS 26 Quando especificado option ARCH (11) Explora as novas instruções do Vector Extension Facility (SIMD) para os statements de Cobol: • INSPECT REPLACING • INSPECT TALLYING • 30X mais eficiência na execução dessas instruções Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 27. Enterprise Cobol 5.2 for Z/OS 27 INSPECT O statement INSPECT examina caracteres ou grupos de caracteres em um data item ou “string". • INSPECT executa os seguintes procedimentos: Conta as occorrências de um caractere específico (alfanumerico, DBCS, ou national-UTF-16) em um data item (formats 1 e 3). Conta as occorrências de caracteres específicos e preenche porções ou todo o data item com caracteres específicos, como por exemplo, espaços ou zeros (formats 2 and 3). Converte todas as occorrências de caracteres específicos de um data item por caracteres de substituição fornecidos pelo usuário (format 4). Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 28. Enterprise Cobol 5.2 for Z/OS 28 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 29. Enterprise Cobol 5.2 for Z/OS 29 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 30. Enterprise Cobol 5.2 for Z/OS 30 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 31. 31 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil. Enterprise Cobol 5.2 for Z/OS
  • 32. PL/I 32 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 33. Enterprise PL/I 4.5 for z/OS 33 z13 hardware exploitation foi implementado no compilador Enterprise PL/I for z/OS através da opção ARCHITECTURE(11). As otimizações proporcionam uma melhor performance para aplicações rodando no servidor z13, sem que sejam requeridas alterações no código fonte. Uma média de melhoria de 17% foi observada na performance em benchmarks para programas “PL/I CPU-intensivos” quando rodando no z13 e comparando os resultados com os mesmos testes no rodando no zEnterprise EC12.* Obs.: As melhorias de performance são baseadas em medidas tomadas nos laboratórios internos da IBM, usando as opções ARCH(11) e OPT(3) do compilador. Resultados de performance podem variar para aplicações específicas. Alguns fatores que podem afetar a performance são: o código fonte e as opções do compilador. *PL/I 4.5 Fact Sheet http://www-01.ibm.com/support/docview.wss?uid=swg21691853 Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 34. Enterprise PL/I 4.5 for z/OS 34 Melhorias de performance: Quando é especificado ARCH(11), o compilador gera um código que explora as novas instruções vetoriais, se o algorítmo ou função forem elegíveis, após a compilação, à instruções assembler que utilizam SIMD. As funções SEARCH e VERIFY são as que mais se beneficiam dessas novas instruções. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 35. Enterprise PL/I 4.5 for z/OS 35 SEARCH SEARCH retorna um valor especificando a primeira posição num string onde aparece qualquer um dos caracter, bit, graphic ou widechar de outro string. É possível também especificar a partir de qual posição deve-se iniciar a procura. x especifica em qual string procurar pela ocorrência de qualquer um caracter, bit, graphic ou widechar presente em y. Se x ou y forem um null string, o resultado é zero. Se não houver nenhuma ocorrência de y em x, o resultado será zero. n especifica a posição dentro de x onde dever ser iniciada a procura. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 36. Enterprise PL/I 4.5 for z/OS 36 Exemplo: dcl Source char value(’ Our PL/I wields the Power ’); dcl Pos fixed bin(31); /* Find occurrences of any of the characters ’P’,’o’,or ’w’ in source * / Pos = search (Source, ’Pow’); /* returns 6 for the ’P’ */ Pos = search (Source, ’Pow’, Pos+1); /* returns 11 for the ’w’ */ Pos = search (Source, ’Pow’, Pos+1); /* returns 22 for the ’P’ */ Pos = search (Source, ’Pow’, Pos+1); /* returns 23 for the ’o’ */ Pos = search (Source, ’Pow’, Pos+1); /* returns 24 for the ’w’ */ No examplo acima, SEARCH retorna a posição onde qualquer um dos três caracteres (‘P’,’o’ ou ‘w’) aparecem na frase: ’ Our PL/I wields the Power ’ 1 6 11 22 23 24 Pos = index (source, ’Pow’,1); /* returns 22 for the ’Pow’ */ INDEX retorna a posição onde o string completo: ‘Pow’ aparece. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 37. Enterprise PL/I 4.5 for z/OS 37 VERIFY VERIFY retorna um valor indicando a posição em x, do caractere, widechar, gráfico ou bit mais à esquerda que não está em y. É possível também especificar a partir de qual posição do x deve ser procurado. Se todos os caracteres, widechars, graphics ou bits em x estiverem em y também, será restorndo um valor de zero. Se x é um null string, um valor de zero é retornado. Se x não é o null string e y é o null string, o valor retornado será o conteúdo de n . Valor padrão de n é um. x String y String n Especifica o local dentro do String onde a procura deve ser iniciada. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 38. Enterprise PL/I 4.5 for z/OS 38 Exemplo: X = ’_ _a b’; /* Two blanks in each space */ Y = ’ ’; /* One blank */ N = 1; I = verify(X,Y,N); /* I = 3 */ do while (I > 0); display ( ’Nonblank at position ’ { trim(I) ); N = I + 1; I = verify(X,Y,N); end; Depois da primeira passagem pelo loop do while-end N=4 e VERIFY(X,Y,N) retorna 6. Depois da segunda passagem, N=7 (LENGTH(x)+1), VERIFY(X,Y,N) agora retorna 0 e o loop termina. Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.
  • 39. Obrigado ! 39 Flavio C Buccianti flaviocb@gmail.com Proibida cópia ou divulgação sem permissão escrita do CMG Brasil.