SlideShare a Scribd company logo
1 of 29
Download to read offline
Kto mówi?
● Inżynier systemów wbudowanych
● Linux/ARM
● Sieci
● DPDK
Plan
1. Po co programować w asemblerze?
2. Potok przetwarzania procesora
3. Wstęp do kryptografii komputerowej
4. AES128-CBC + SHA256 na ARMv8
Plan
1. Po co programować w asemblerze?
2. Potok przetwarzania procesora
3. Wstęp do kryptografii komputerowej
4. AES128-CBC + SHA256 na ARMv8
Typowe aplikacje dla asemblera
● Computational kernels (80% czasu spędzanego w jednej funkcji)
○ Procedury numeryczne
○ Funkcje kryptograficzne
● Obsługa sprzętu
○ Bootloadery
○ Fragmenty Jądra OS
■ przełączanie kontekstu
■ obsługa przerwań
Plan
1. Po co programować w asemblerze?
2. Potok przetwarzania procesora
3. Wstęp do kryptografii komputerowej
4. AES128-CBC + SHA256 na ARMv8
Kod maszynowy
while (--i)
a[i] = a[i] * 5 + 2
LOOP:
ADD Y, -1
CMP Y, a
BE END
LOAD X, [Y]
MUL X, 5
ADD X, 2
STORE X, [Y]
B LOOP
END:
Instrukcja Latencja Zajętość
LOAD 2 1
ADD 1 1
MUL 4 4
STORE 2 1
Potok dla ciała pętli
Cykl 1 2 3 4 5 6 7 8 9 10 11 12
LOAD X, [Y+5] F D ADD M W
MUL X,5 F D - MUL MUL MUL MUL
ADD X,2 F - D - - ADD M W
STORE X, [Y+5] F - - - D ADD M W
Rozwinięta pętla
while (i-=2) {
a[i] = a[i] * 5 + 2
a[i-1] = a[i-1] * 5 + 2
}
LOOP:
ADD Y, -2
CMP Y, a
BE END
LOAD X, [Y]
LOAD Z, [Y-1]
MUL X, 5
MUL Z, 5
ADD X, 2
ADD Z, 2
STORE X, [Y]
STORE Z, [Y-1]
B LOOP
END:
Potok dla ciała pętli
Cykl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
LOAD X, [Y] F D ADD M W
LOAD Z, [Y-1] F D ADD M W
MUL X, 5 F D MUL MUL MUL MUL M W
MUL Z, 5 F D - - - MUL MUL MUL MUL M W
ADD X, 2 F - - - D ADD M W
ADD Z, 2 F - - - - - - D ADD M W
STORE X, [Y] F - - - - - - D ADD M W
STORE Z, [Y-1] F - - - - - - D ADD M W
Wnioski z przetwarzania
potokowego
● Pętla zwykła
12 cykli na iterację + narzut na pętlę
● Pętla rozwinięta 2x
18 cykli na iterację + narzut pętli = 9 cykli/iterację + narzut / 2
● Procesory Out-of-Order częściowo potrafią same rozwijać pętle
optymalizacja „za darmo” przez sam procesor!
Plan
1. Po co programować w asemblerze?
2. Potok przetwarzania procesora
3. Wstęp do kryptografii komputerowej
4. Implementacja AES128-CBC + SHA256
SHA 256
● Funkcja skrótu używana do autentykacji kryptogramów
● Wejście: N Bloków 64B
● Wynik - 256 bitów = 32B skrótu
Plan
1. Po co programować w asemblerze?
2. Potok przetwarzania procesora
3. Wstęp do kryptografii komputerowej
4. AES128-CBC + SHA256 na ARMv8
AES128
+SHA256
– fragment
eor v0.16b v0.16b v18.16b /* final res 0 */
ld1 {v6.16b} [x8] 16 /* key6 */
add v5.4s v5.4s v27.4s /* wk = key5+w1 */
sha256su
0 v26.4s v27.4s
eor v1.16b v1.16b v0.16b /* mode op 1 xor w/prev value */
ld1 {v7.16b} [x8] 16 /* key7 */
mov v21.16b v22.16b /* copy abcd */
st1 {v0.16b} [x1] 16
aese v1.16b v8.16b
sha256h q22 q23 v4.4s
add v6.4s v6.4s v28.4s /* wk = key6+w2 */
sha256h2 q23 q21 v4.4s
aesmc v1.16b v1.16b
sha256su
1 v26.4s v28.4s v29.4s
aese v1.16b v9.16b
sha256su
0 v27.4s v28.4s
mov v21.16b v22.16b /* copy abcd */
sha256h q22 q23 v5.4s
aesmc v1.16b v1.16b
sha256h2 q23 q21 v5.4s
aese v1.16b v10.16b
ld1 {v2.16b} [x0] 16
add v7.4s v7.4s v29.4s /* wk = key7+w3 */
AES128-SHA256 – schemat
Blok 1 Blok 2 Blok 11 Blok 12...
16B
Wejście:
LOAD V1, Blok 1
LOAD V2, Blok 2
AES V1
LOAD V3, Blok 3
AES V2
LOAD V4, Blok 4
AES V3
LOAD V5, Blok 5
AES V4
LOAD V6, Blok 6
SHA V1
AES v5
LOAD V7, Blok 7
SHA V2
AES V6
LOAD V8, Blok 8
SHA V3
AES V7
LOAD V9, Blok 9
SHA V4
AES V8
LOAD V10, Blok 10
SHA V5
AES v9
LOAD V11, Blok 11
SHA V6
AES V10
LOAD V12, Blok 12
SHA V7
AES V11
SHA V8
AES V12
SHA V9
SHA V10
SHA V11
SHA v12
Blok mieści się w rejestrze NEON 128-bit
AES - wszystkie rundy AES dla 1 bloku
SHA - wszystkie instrukcje SHA256 dla bloku 16B*
* Pełne SHA to 4 bloki
AES128-SHA256 – pod lupą
Instrukcja Cykl Zależność
1 aese v1.16b v8.16b 1
2 sha256h q22 q23 v4.4s 2
3 add v6.4s v6.4s v28.4s 3
4 sha256h2 q23 q21 v4.4s 4 q23??
5 aesmc v1.16b v1.16b 5 1
6 sha256su1 v26.4s v28.4s v29.4s 6
7 aese v1.16b v9.16b 7 5
8 sha256su0 v27.4s v28.4s 8
Instrukcja Latencja Zajętość
sha256su0 8 5
sha256su1 8 5
sha256h 8 5
sha256h2 8 5
ld1 (1 reg) 3 1
aese 4 2
aesmc 2 2
AES128-SHA256 – pod lupą
Instrukcja Cykl Zależność
1 aese v1.16b v8.16b 1
2 sha256h q22 q23 v4.4s 2
3 add v6.4s v6.4s v28.4s 3
4 sha256h2 q23 q21 v4.4s 4 q23??
5 aesmc v1.16b v1.16b 5 1
6 sha256su1 v26.4s v28.4s v29.4s 6
7 aese v1.16b v9.16b 7 5
8 sha256su0 v27.4s v28.4s 8
Instrukcja Latencja Zajętość
sha256su0 8 5
sha256su1 8 5
sha256h 8 5
sha256h2 8 5
ld1 (1 reg) 3 1
aese 4 2
aesmc 2 2
Do poduchy
● Kod źródłowy:
○ https://github.com/caviumnetworks/armv8_crypto
● Computer Architecture, A Quantitative Approach, 5th
edition
● Computer Organization and Design, ARM edition
● Intel® 64 and IA-32 Architectures Optimization Reference
Manual
○ http://www.intel.com/content/dam/www/public/us/en/documents/man
uals/64-ia-32-architectures-optimization-manual.pdf
● NEON tutorial
○ https://people.xiph.org/~tterribe/daala/neon_tutorial.pdf
Efekt motyla w kodzie maszynowym.

More Related Content

What's hot

100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. Redge Technologies
 
Python i elektronika
Python i elektronikaPython i elektronika
Python i elektronikariklaunim
 
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. allegro.tech
 
100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?Redge Technologies
 
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Semihalf
 
Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Semihalf
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Semihalf
 
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Redge Technologies
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. Semihalf
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Semihalf
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Semihalf
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PROIDEA
 
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PROIDEA
 
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...PROIDEA
 
Interfejs RS232C
Interfejs RS232CInterfejs RS232C
Interfejs RS232Crlutowsk
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Semihalf
 
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...PROIDEA
 
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...PROIDEA
 

What's hot (20)

Barcamp 08/06/2010
Barcamp 08/06/2010Barcamp 08/06/2010
Barcamp 08/06/2010
 
100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego. 100 M pakietów na sekundę dla każdego.
100 M pakietów na sekundę dla każdego.
 
Python i elektronika
Python i elektronikaPython i elektronika
Python i elektronika
 
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach. Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
Allegro Tech Talks Poznań #4: Jak przyspieszyć SOLRa w kilku prostych krokach.
 
100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?100Mpps czyli jak radzić sobie z atakami DDoS?
100Mpps czyli jak radzić sobie z atakami DDoS?
 
DTrace
DTraceDTrace
DTrace
 
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
Skazani na firmware. Serwer na ARM64? Tak, to możliwe! S07E03
 
Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?Embedded Debugging, czyli co kryje się w jądrze?
Embedded Debugging, czyli co kryje się w jądrze?
 
Bootloadery i programy bare metal.
Bootloadery i programy bare metal.Bootloadery i programy bare metal.
Bootloadery i programy bare metal.
 
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
Ochrona przed atakami DDoS na platformie x86. Czy można mieć jednocześnie wyd...
 
CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special. CPU GHOST BUSTING. Semihalf Barcamp Special.
CPU GHOST BUSTING. Semihalf Barcamp Special.
 
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
Linux KVM - wsparcie dla wirtualizacji w kontekście serwerów ARM.
 
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
Programuj wbrew regułom. Barcamp Semihalf S08:E02 29/05/2018
 
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
PLNOG 18 - Maciej Flak - Network as a Sensor czyli wykorzystanie NetFlow do m...
 
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
PLNOG 8: Przemysław Grygiel - Data Center Allegro wyboista droga L2 do autost...
 
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
PLNOG 8: Tomasz Paszkowski - Wirtualne systemy dyskowe na platformie OpenStac...
 
Interfejs RS232C
Interfejs RS232CInterfejs RS232C
Interfejs RS232C
 
Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.Programowanie sterowników w Linuksie.
Programowanie sterowników w Linuksie.
 
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
PLNOG 6: Bartosz Kiziukiewicz - Ethernet First Mile - Connectivity Fault Mana...
 
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
PLNOG16: DNS Catalog Zones łatwe tworzenie i synchronizacja serwowanych ...
 

Similar to Efekt motyla w kodzie maszynowym.

Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Semihalf
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PROIDEA
 
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...PROIDEA
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegroallegro.tech
 
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PROIDEA
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPROIDEA
 
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...PROIDEA
 
Agregacja i analiza logów
Agregacja i analiza logówAgregacja i analiza logów
Agregacja i analiza logówDivante
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!Semihalf
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Semihalf
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Semihalf
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL versionMaciej Lasyk
 
PLNOG 6: Piotr Wojciechowski - IPv6 - dwa kliknięcia i działa
PLNOG 6: Piotr Wojciechowski - IPv6 - dwa kliknięcia i działa PLNOG 6: Piotr Wojciechowski - IPv6 - dwa kliknięcia i działa
PLNOG 6: Piotr Wojciechowski - IPv6 - dwa kliknięcia i działa PROIDEA
 
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitchmichalpodoski
 
Performance troubleshooting in Hyper-V
Performance troubleshooting in Hyper-VPerformance troubleshooting in Hyper-V
Performance troubleshooting in Hyper-VLukasz Kaluzny
 
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...PROIDEA
 
Procesor Ti C5420
Procesor Ti C5420Procesor Ti C5420
Procesor Ti C5420biometria
 

Similar to Efekt motyla w kodzie maszynowym. (20)

Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.Hierarchia pamięci w systemach komputerowych.
Hierarchia pamięci w systemach komputerowych.
 
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
PLNOG19 - Jakub Słociński - Wieloprocesorowa platforma x86 a wydajny routing ...
 
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
PLNOG 8: Lucjan Kisiel, Marcin Matyla - Router brzegowy z wydolnością 3 Gb ru...
 
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
[WHUG] Wielki brat patrzy - czyli jak zbieramy dane o użytkownikach allegro
 
OpenEmbedded
OpenEmbeddedOpenEmbedded
OpenEmbedded
 
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
PLNOG 9: Robert Ślaski - SKALOWALNE SZYFROWANIE USŁUG W SIECI OPERATORA - prz...
 
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFXPLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
PLNOG 17 - Sławomir Janukowicz - NFV – using Juniper vMX, vSRX and NFX
 
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
PLNOG22: Tomasz Jarlaczyk & Tomasz Ludwiczak - DNSv6 i SSL - historie z życia...
 
Monitoring sieci
Monitoring sieciMonitoring sieci
Monitoring sieci
 
Agregacja i analiza logów
Agregacja i analiza logówAgregacja i analiza logów
Agregacja i analiza logów
 
PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?PHP-PM. Hit czy kit?
PHP-PM. Hit czy kit?
 
Jak napisać własny RTOS!
Jak napisać własny RTOS!Jak napisać własny RTOS!
Jak napisać własny RTOS!
 
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
Programuj wbrew regułom - Bug Legends Quiz Show. Semihalf Barcamp 25/04/2018
 
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
Masz wiadomość! Komunikacja wieloprocesorowa w praktyce.
 
Shall we play a game? PL version
Shall we play a game? PL versionShall we play a game? PL version
Shall we play a game? PL version
 
PLNOG 6: Piotr Wojciechowski - IPv6 - dwa kliknięcia i działa
PLNOG 6: Piotr Wojciechowski - IPv6 - dwa kliknięcia i działa PLNOG 6: Piotr Wojciechowski - IPv6 - dwa kliknięcia i działa
PLNOG 6: Piotr Wojciechowski - IPv6 - dwa kliknięcia i działa
 
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys SoftswitchHalokwadrat PLNOG - Freeswitch a big boys Softswitch
Halokwadrat PLNOG - Freeswitch a big boys Softswitch
 
Performance troubleshooting in Hyper-V
Performance troubleshooting in Hyper-VPerformance troubleshooting in Hyper-V
Performance troubleshooting in Hyper-V
 
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
PLNOG 8: Marcin Bala, Michał Furmański - Kompleksowe rozwiązania TriplePlay o...
 
Procesor Ti C5420
Procesor Ti C5420Procesor Ti C5420
Procesor Ti C5420
 

More from Semihalf

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Semihalf
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.Semihalf
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01Semihalf
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Semihalf
 
Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Semihalf
 
Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Semihalf
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Semihalf
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Semihalf
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Semihalf
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.Semihalf
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Semihalf
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.Semihalf
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.Semihalf
 
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipSemihalf
 

More from Semihalf (14)

Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
Meetup #1 - Świat Komputera Przed Systemem Operacyjnym
 
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
ARM CoreSight - sprawdź, co tak naprawdę robi Twój SoC.
 
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01Uwaga na buga! GDB w służbie programisty.  Barcamp Semihalf S09:E01
Uwaga na buga! GDB w służbie programisty. Barcamp Semihalf S09:E01
 
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
Oczyszczacz powietrza i stos sieciowy? Czas na test! Semihalf Barcamp 13/06/2018
 
Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02Skazani na firmware. ARM Trusted Firmware. S07E02
Skazani na firmware. ARM Trusted Firmware. S07E02
 
Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.Skazani na firmware. Świat komputera przed systemem operacyjnym.
Skazani na firmware. Świat komputera przed systemem operacyjnym.
 
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
Software Defined Networks (SDN) na przykładzie rozwiązania OpenContrail.
 
Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.Architektura mikrokontrolera pisana słowem.
Architektura mikrokontrolera pisana słowem.
 
Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?Czym są heterogeniczne systemy mikroprocesorowe?
Czym są heterogeniczne systemy mikroprocesorowe?
 
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
SmartNIC - wprowadzenie do inteligentnych interfejsów sieciowych.
 
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.Wirtualizacja sieci na przykładzie OpenContrail vRouter.
Wirtualizacja sieci na przykładzie OpenContrail vRouter.
 
DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.DTrace, czyli jak zobaczyć to czego nie widać.
DTrace, czyli jak zobaczyć to czego nie widać.
 
Secure Coding w praktyce.
Secure Coding w praktyce.Secure Coding w praktyce.
Secure Coding w praktyce.
 
FreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a ChipFreeBSD on Cavium ThunderX System on a Chip
FreeBSD on Cavium ThunderX System on a Chip
 

Efekt motyla w kodzie maszynowym.

  • 1.
  • 2.
  • 3. Kto mówi? ● Inżynier systemów wbudowanych ● Linux/ARM ● Sieci ● DPDK
  • 4. Plan 1. Po co programować w asemblerze? 2. Potok przetwarzania procesora 3. Wstęp do kryptografii komputerowej 4. AES128-CBC + SHA256 na ARMv8
  • 5. Plan 1. Po co programować w asemblerze? 2. Potok przetwarzania procesora 3. Wstęp do kryptografii komputerowej 4. AES128-CBC + SHA256 na ARMv8
  • 6.
  • 7.
  • 8. Typowe aplikacje dla asemblera ● Computational kernels (80% czasu spędzanego w jednej funkcji) ○ Procedury numeryczne ○ Funkcje kryptograficzne ● Obsługa sprzętu ○ Bootloadery ○ Fragmenty Jądra OS ■ przełączanie kontekstu ■ obsługa przerwań
  • 9. Plan 1. Po co programować w asemblerze? 2. Potok przetwarzania procesora 3. Wstęp do kryptografii komputerowej 4. AES128-CBC + SHA256 na ARMv8
  • 10.
  • 11. Kod maszynowy while (--i) a[i] = a[i] * 5 + 2 LOOP: ADD Y, -1 CMP Y, a BE END LOAD X, [Y] MUL X, 5 ADD X, 2 STORE X, [Y] B LOOP END: Instrukcja Latencja Zajętość LOAD 2 1 ADD 1 1 MUL 4 4 STORE 2 1
  • 12. Potok dla ciała pętli Cykl 1 2 3 4 5 6 7 8 9 10 11 12 LOAD X, [Y+5] F D ADD M W MUL X,5 F D - MUL MUL MUL MUL ADD X,2 F - D - - ADD M W STORE X, [Y+5] F - - - D ADD M W
  • 13. Rozwinięta pętla while (i-=2) { a[i] = a[i] * 5 + 2 a[i-1] = a[i-1] * 5 + 2 } LOOP: ADD Y, -2 CMP Y, a BE END LOAD X, [Y] LOAD Z, [Y-1] MUL X, 5 MUL Z, 5 ADD X, 2 ADD Z, 2 STORE X, [Y] STORE Z, [Y-1] B LOOP END:
  • 14. Potok dla ciała pętli Cykl 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 LOAD X, [Y] F D ADD M W LOAD Z, [Y-1] F D ADD M W MUL X, 5 F D MUL MUL MUL MUL M W MUL Z, 5 F D - - - MUL MUL MUL MUL M W ADD X, 2 F - - - D ADD M W ADD Z, 2 F - - - - - - D ADD M W STORE X, [Y] F - - - - - - D ADD M W STORE Z, [Y-1] F - - - - - - D ADD M W
  • 15. Wnioski z przetwarzania potokowego ● Pętla zwykła 12 cykli na iterację + narzut na pętlę ● Pętla rozwinięta 2x 18 cykli na iterację + narzut pętli = 9 cykli/iterację + narzut / 2 ● Procesory Out-of-Order częściowo potrafią same rozwijać pętle optymalizacja „za darmo” przez sam procesor!
  • 16. Plan 1. Po co programować w asemblerze? 2. Potok przetwarzania procesora 3. Wstęp do kryptografii komputerowej 4. Implementacja AES128-CBC + SHA256
  • 17.
  • 18.
  • 19. SHA 256 ● Funkcja skrótu używana do autentykacji kryptogramów ● Wejście: N Bloków 64B ● Wynik - 256 bitów = 32B skrótu
  • 20.
  • 21. Plan 1. Po co programować w asemblerze? 2. Potok przetwarzania procesora 3. Wstęp do kryptografii komputerowej 4. AES128-CBC + SHA256 na ARMv8
  • 22.
  • 23.
  • 24. AES128 +SHA256 – fragment eor v0.16b v0.16b v18.16b /* final res 0 */ ld1 {v6.16b} [x8] 16 /* key6 */ add v5.4s v5.4s v27.4s /* wk = key5+w1 */ sha256su 0 v26.4s v27.4s eor v1.16b v1.16b v0.16b /* mode op 1 xor w/prev value */ ld1 {v7.16b} [x8] 16 /* key7 */ mov v21.16b v22.16b /* copy abcd */ st1 {v0.16b} [x1] 16 aese v1.16b v8.16b sha256h q22 q23 v4.4s add v6.4s v6.4s v28.4s /* wk = key6+w2 */ sha256h2 q23 q21 v4.4s aesmc v1.16b v1.16b sha256su 1 v26.4s v28.4s v29.4s aese v1.16b v9.16b sha256su 0 v27.4s v28.4s mov v21.16b v22.16b /* copy abcd */ sha256h q22 q23 v5.4s aesmc v1.16b v1.16b sha256h2 q23 q21 v5.4s aese v1.16b v10.16b ld1 {v2.16b} [x0] 16 add v7.4s v7.4s v29.4s /* wk = key7+w3 */
  • 25. AES128-SHA256 – schemat Blok 1 Blok 2 Blok 11 Blok 12... 16B Wejście: LOAD V1, Blok 1 LOAD V2, Blok 2 AES V1 LOAD V3, Blok 3 AES V2 LOAD V4, Blok 4 AES V3 LOAD V5, Blok 5 AES V4 LOAD V6, Blok 6 SHA V1 AES v5 LOAD V7, Blok 7 SHA V2 AES V6 LOAD V8, Blok 8 SHA V3 AES V7 LOAD V9, Blok 9 SHA V4 AES V8 LOAD V10, Blok 10 SHA V5 AES v9 LOAD V11, Blok 11 SHA V6 AES V10 LOAD V12, Blok 12 SHA V7 AES V11 SHA V8 AES V12 SHA V9 SHA V10 SHA V11 SHA v12 Blok mieści się w rejestrze NEON 128-bit AES - wszystkie rundy AES dla 1 bloku SHA - wszystkie instrukcje SHA256 dla bloku 16B* * Pełne SHA to 4 bloki
  • 26. AES128-SHA256 – pod lupą Instrukcja Cykl Zależność 1 aese v1.16b v8.16b 1 2 sha256h q22 q23 v4.4s 2 3 add v6.4s v6.4s v28.4s 3 4 sha256h2 q23 q21 v4.4s 4 q23?? 5 aesmc v1.16b v1.16b 5 1 6 sha256su1 v26.4s v28.4s v29.4s 6 7 aese v1.16b v9.16b 7 5 8 sha256su0 v27.4s v28.4s 8 Instrukcja Latencja Zajętość sha256su0 8 5 sha256su1 8 5 sha256h 8 5 sha256h2 8 5 ld1 (1 reg) 3 1 aese 4 2 aesmc 2 2
  • 27. AES128-SHA256 – pod lupą Instrukcja Cykl Zależność 1 aese v1.16b v8.16b 1 2 sha256h q22 q23 v4.4s 2 3 add v6.4s v6.4s v28.4s 3 4 sha256h2 q23 q21 v4.4s 4 q23?? 5 aesmc v1.16b v1.16b 5 1 6 sha256su1 v26.4s v28.4s v29.4s 6 7 aese v1.16b v9.16b 7 5 8 sha256su0 v27.4s v28.4s 8 Instrukcja Latencja Zajętość sha256su0 8 5 sha256su1 8 5 sha256h 8 5 sha256h2 8 5 ld1 (1 reg) 3 1 aese 4 2 aesmc 2 2
  • 28. Do poduchy ● Kod źródłowy: ○ https://github.com/caviumnetworks/armv8_crypto ● Computer Architecture, A Quantitative Approach, 5th edition ● Computer Organization and Design, ARM edition ● Intel® 64 and IA-32 Architectures Optimization Reference Manual ○ http://www.intel.com/content/dam/www/public/us/en/documents/man uals/64-ia-32-architectures-optimization-manual.pdf ● NEON tutorial ○ https://people.xiph.org/~tterribe/daala/neon_tutorial.pdf