SlideShare a Scribd company logo
1 of 71
1BREST
Effective CPU
APRIL 22, 2018
2BREST
Александр Степанюк
Разработчик в компании EPAM
С++
Performance
Software Architecture
.NET
Cloud
Safe Code
Aliaksander Stsepaniuk
EPAM Systems, Chief Software Engineer
3BREST
• Что такое CPU
• Структура простого RISC-процессора
• Конвейер CPU
• Параллелизм на уровне инструкций
• Изменение порядка исполнения инструкций
• Ветвления
ПЛАН
4BREST
• Просто
• Полезно
• Интересно
Почему об этом вообще стоит сейчас задумываться?
5BREST
ЧТО ТАКОЕ
ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР
6BREST
Что такое центральный процессор?
Центральный процессор (CPU) — это
электронная микросхема, получающая
инструкции компьютерной программы и
выполняющая базовые арифметические,
логические, управляющие операции и
операции ввода-вывода, указанные в
инструкциях.
7BREST
СТРУКТУРА ПРОСТОГО
RISC-ПРОЦЕССОРА
8BREST
Структура инструкции
9BREST
Структура инструкции RISC
1. Загрузка инструкции — Instruction Fetching
IF
10BREST
Структура инструкции RISC
1. Загрузка — Instruction Fetching (IF)
2. Декодирование инструкции — Instruction Decode
IF ID
11BREST
Структура инструкции RISC
1. Загрузка — Instruction Fetching (IF)
2. Декодирование — Instruction Decode (ID)
3. Исполнение инструкции — Execute
IF ID EX
12BREST
Структура инструкции RISC
1. Загрузка — Instruction Fetching (IF)
2. Декодирование — Instruction Decode (ID)
3. Исполнение — Execute (EX)
4. Доступ к памяти — Memory Access
IF ID EX MEM
13BREST
Структура инструкции RISC
1. Загрузка — Instruction Fetching (IF)
2. Декодирование — Instruction Decode (ID)
3. Исполнение — Execute (EX)
4. Доступ к памяти — Memory Access (MEM)
5. Запись результата — Write Back
IF ID EX MEM WB
14BREST
Структура процессора RISC
IF ID EX MEM WB
15BREST
Структура процессора RISC
IF ID EX MEM WBIF ID EX MEM WB
IF ID MEM WBEX
16BREST
КОНВЕЙЕР
17BREST
График исполнения
IF
ID
EX
MEM
WB
Инструкция 1
Такт
18BREST
График исполнения
IF
ID
EX
MEM
WB
Такт
IF
ID
EX
MEM
WB
Инструкция 1
Инструкция 1
19BREST
График исполнения
IF
ID
EX
MEM
WB
Такт
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Инструкция 1
Инструкция 1
Инструкция 1
20BREST
График исполнения
IF
ID
EX
MEM
WB
Такт
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Инструкция 1
Инструкция 1
Инструкция 1
Инструкция 1
21BREST
График исполнения
IF
ID
EX
MEM
WB
Такт
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Инструкция 1
Инструкция 1
Инструкция 1
Инструкция 1
Инструкция 1
22BREST
График исполнения
IF
ID
EX
MEM
WB
Такт
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Инструкция 1
Инструкция 1
Инструкция 1
Инструкция 1
Инструкция 2
23BREST
График исполнения
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
24BREST
Конвейер
25BREST
Конвейер RISC
IF
ID
EX
MEM
WB
Инструкция 1
Такт
26BREST
Конвейер RISC
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Инструкция 2
Инструкция 1
Такт
27BREST
Конвейер RISC
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Инструкция 3
Инструкция 2
Инструкция 1
Такт
28BREST
Конвейер RISC
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Инструкция 4
Инструкция 3
Инструкция 2
Инструкция 1
Такт
29BREST
Конвейер RISC
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
Инструкция 5
Инструкция 4
Инструкция 3
Инструкция 2
Инструкция 1
Такт
30BREST
Конвейер RISC
IF
ID
EX
MEM
WB
Инструкция 6
Такт
Инструкция 5
Инструкция 4
Инструкция 3
Инструкция 2
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
IF
ID
EX
MEM
WB
31BREST
Важно
Процессор работает в режиме конвейера.
32BREST
Важно
Процессор работает в режиме конвейера.
В любой такт работы процесcора он исполняет
несколько инструкций, каждая из которых
имеет свою стадию исполнения.
33BREST
ПАРАЛЛЕЛИЗМ
НА УРОВНЕ ИНСТРУКЦИЙ
34BREST
Параллелизм на уровне инструкций
1. e = a + b
2. f = c + d
3. m = e * f
35BREST
Могут исполняться
одновременно
Параллелизм на уровне инструкций
1. e = a + b
2. f = c + d
3. m = e * f
36BREST
Требует, чтобы (1) и (2)
были завершены
Параллелизм на уровне инструкций
Могут исполняться
одновременно
1. e = a + b
2. f = c + d
3. m = e * f
37BREST
Параллелизм на уровне инструкций
Как это работает?
38BREST
Параллелизм на уровне инструкций
Instruction Decode Queue (56)
Reorder Buffer (192)
Unified Reservation Station (60)
ALU ALU Load/
Store
Load/
Store
Store StoreALU ALU
Float
Vector
Branch
Float
Vector
Vector Branch
Ядро Intel Haswell
CISC
39BREST
ИЗМЕНЕНИЕ ПОРЯДКА
ИСПОЛНЕНИЯ ИНСТРУКЦИЙ
40BREST
Изменение порядка выполнения инструкций
1. e = a + b
2. f = c + d
3. m = e * f
41BREST
Изменение порядка выполнения инструкций
1. e = a + b
2. f = c + d
3. m = e * f
(2) Может завершиться
до того, как (1) начнётся
42BREST
Требует, чтобы (1) и (2)
были завершены
Изменение порядка выполнения инструкций
1. e = a + b
2. f = c + d
3. m = e * f
(2) Может завершиться
до того, как (1) начнётся
43BREST
Требует, чтобы (1) и (2)
были завершены
Изменение порядка выполнения инструкций
1. e = a + b
2. f = c + d
3. m = e * f
Наличие зависимостей в данных мешает параллельному исполнению инструкций.
(2) Может завершиться
до того, как (1) начнётся
44BREST
Параллелизм на уровне инструкций на практике
a++; a++; a++; a++; a++; b++; c++; d++;
45BREST
Параллелизм на уровне инструкций на практике
// Последовательно:
a++; a++; a++; a++;
// Параллельно:
a++; b++; c++; d++;
Параллельный вариант
выполняется в 5 раз быстрее,
чем последовательный.
46BREST
Важно
Благодаря параллелизму на уровне
инструкций процессор может исполнять
несколько инструкций одновременно.
47BREST
Важно
Благодаря параллелизму на уровне
инструкций процессор может исполнять
несколько инструкций одновременно.
Зависимости в данных предотвращают
параллельное исполнение инструкций.
48BREST
Параллелизм на уровне инструкций
Всё здорово
в однопоточном режиме.
49BREST
Пример переупорядоченного выполнения инструкций
a = 0
b = 0
50BREST
Пример переупорядоченного выполнения инструкций
a = 0
b = 0
ThreadA
{
x = a
b = 1
}
51BREST
Пример переупорядоченного выполнения инструкций
a = 0
b = 0
ThreadA
{
x = a
b = 1
}
ThreadB
{
y = b
a = 1
}
52BREST
Пример переупорядоченного выполнения инструкций
a = 0
b = 0
ThreadA
{
x = a
b = 1
}
ThreadB
{
y = b
a = 1
}
x
y
Возможный
результат
53BREST
Пример переупорядоченного выполнения инструкций
a = 0
b = 0
ThreadA
{
x = a
b = 1
}
ThreadB
{
y = b
a = 1
}
x 0
y 0
Возможный
результат
54BREST
Пример переупорядоченного выполнения инструкций
a = 0
b = 0
ThreadA
{
x = a
b = 1
}
ThreadB
{
y = b
a = 1
}
x 0 0 1
y 0 1 0
Возможный
результат
55BREST
Пример переупорядоченного выполнения инструкций
a = 0
b = 0
ThreadA
{
x = a
b = 1
}
ThreadB
{
y = b
a = 1
}
x 0 0 1 1
y 0 1 0 1
Возможный
результат
56BREST
Важно
Процессор может изменять порядок
выполнения инструкций так, чтобы не
менялся их смысл в одном потоке.
57BREST
Важно
Процессор может изменять порядок
выполнения инструкций так, чтобы не
менялся их смысл в одном потоке.
Смысл многопоточного кода может изменяться.
58BREST
ВЕТВЛЕНИЯ
59BREST
Ветвления
if (a > b)
x++;
else
x--;
60BREST
Ветвления
if (a > b)
x++;
else
x--;
Какая ветка кода должна
исполняться дальше?
61BREST
Ветвления
while (i > 0) {
DoSomething();
}
Continue();
62BREST
Ветвления
while (i > 0) {
DoSomething();
}
Continue();
Какой вызов функции
должен попасть на
конвейер?
63BREST
Спекулятивное исполнение
Процессор пытается предсказать, какая
ветка кода будет выполнена до того, как это
станет известно доподлинно.
Если предсказание ошибочно, процессор
отменяет результаты выполнения неверно
предсказанной ветки.
64BREST
Спекулятивное исполнение
if (a > b)
x++;
else
x--;
while (i > 0) {
DoSomething();
}
Continue();
65BREST
Влияние ошибочных предсказаний
66BREST
Влияние ошибочных предсказаний
long sum = 0;
for (unsigned c = 0; c < arraySize; ++c)
{
if (data[c] >= 128) sum += data[c];
}
67BREST
Влияние ошибочных предсказаний
std::sort(data, data + arraySize);
long sum = 0;
for (unsigned c = 0; c < arraySize; ++c)
{
if (data[c] >= 128) sum += data[c];
}
68BREST
Влияние ошибочных предсказаний
std::sort(data, data + arraySize);
long sum = 0;
for (unsigned c = 0; c < arraySize; ++c)
{
if (data[c] >= 128) sum += data[c];
}
Если массив предварительно отсортирован,
цикл исполняется в 2-6 раз быстрее.
69BREST
Важно
Современные процессоры имеют
эффективные алгоритмы предсказания
ветвлений.
Частые ошибки в предсказаниях ветвлений
могут существенно повлиять на
производительность.
70BREST
СПАСИБО!
71BREST
КОНТАКТНАЯ ИНФОРМАЦИЯ
Email: Aliaksander_Stsepaniuk@epam.com
Skype: aliaksander.stsepaniuk

More Related Content

What's hot

ARM vs Intel microarchitecture
ARM vs Intel microarchitectureARM vs Intel microarchitecture
ARM vs Intel microarchitectureIlya Kryukov
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPUMikhail Kurnosov
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Ontico
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Mikhail Kurnosov
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012Alex Tutubalin
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...Mikhail Kurnosov
 
World of Tanks: на пути к 1M CCU
World of Tanks: на пути к 1M CCUWorld of Tanks: на пути к 1M CCU
World of Tanks: на пути к 1M CCUMaksim Melnikau
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Mikhail Kurnosov
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAMikhail Kurnosov
 
09. АЦП STM32(2)
09. АЦП STM32(2)09. АЦП STM32(2)
09. АЦП STM32(2)KamlachPV
 
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Mikhail Kurnosov
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОDaria Oreshkina
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Mikhail Kurnosov
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...a15464321646213
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системpianist2317
 
06. Память Cortex-M3(4)
06. Память Cortex-M3(4)06. Память Cortex-M3(4)
06. Память Cortex-M3(4)KamlachPV
 
Организация хранилища с Vast sky (Дмитрий Лоханский)
Организация хранилища с Vast sky (Дмитрий Лоханский)Организация хранилища с Vast sky (Дмитрий Лоханский)
Организация хранилища с Vast sky (Дмитрий Лоханский)Ontico
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 

What's hot (20)

ARM vs Intel microarchitecture
ARM vs Intel microarchitectureARM vs Intel microarchitecture
ARM vs Intel microarchitecture
 
Лекция 9. Программирование GPU
Лекция 9. Программирование GPUЛекция 9. Программирование GPU
Лекция 9. Программирование GPU
 
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
Эффективное использование x86-совместимых CPU (Алексей Тутубалин)
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
 
Доклад на Highload-2012
Доклад на Highload-2012Доклад на Highload-2012
Доклад на Highload-2012
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
 
World of Tanks: на пути к 1M CCU
World of Tanks: на пути к 1M CCUWorld of Tanks: на пути к 1M CCU
World of Tanks: на пути к 1M CCU
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDAЛекция 11: Программирование графических процессоров на NVIDIA CUDA
Лекция 11: Программирование графических процессоров на NVIDIA CUDA
 
09. АЦП STM32(2)
09. АЦП STM32(2)09. АЦП STM32(2)
09. АЦП STM32(2)
 
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
Лекция 2: Оптимизация ветвлений и циклов (Branch prediction and loops optimiz...
 
Лекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и системЛекция № 3 Организация ЭВМ и систем
Лекция № 3 Организация ЭВМ и систем
 
Дмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПОДмитрий Еманов — Под капотом серверного ПО
Дмитрий Еманов — Под капотом серверного ПО
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, Paral...
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Лекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и системЛекция №3 Организация ЭВМ и систем
Лекция №3 Организация ЭВМ и систем
 
06. Память Cortex-M3(4)
06. Память Cortex-M3(4)06. Память Cortex-M3(4)
06. Память Cortex-M3(4)
 
Организация хранилища с Vast sky (Дмитрий Лоханский)
Организация хранилища с Vast sky (Дмитрий Лоханский)Организация хранилища с Vast sky (Дмитрий Лоханский)
Организация хранилища с Vast sky (Дмитрий Лоханский)
 
Freebsd11
Freebsd11Freebsd11
Freebsd11
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 

Similar to SETCON'18 - Aliaksander Stsepaniuk - Effective CPU

Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Alex Tutubalin
 
Лекция 1: Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1: Архитектурно-ориентированная оптимизация программного обеспечения (...Лекция 1: Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1: Архитектурно-ориентированная оптимизация программного обеспечения (...Mikhail Kurnosov
 
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Cisco Russia
 
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ... Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...Yandex
 
Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...ARCCN
 
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...sami_11
 
Развитие технологий построения распределенных ЦОД
Развитие технологий построения распределенных ЦОДРазвитие технологий построения распределенных ЦОД
Развитие технологий построения распределенных ЦОДCisco Russia
 
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresProit-people
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2Technopark
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Cisco Russia
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipARCCN
 
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...Mikhail Kurnosov
 
Безопасность Центров Обработки Данных
Безопасность Центров Обработки ДанныхБезопасность Центров Обработки Данных
Безопасность Центров Обработки ДанныхCisco Russia
 
Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017S-Terra CSP
 
Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)
Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)
Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)Ontico
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Ontico
 

Similar to SETCON'18 - Aliaksander Stsepaniuk - Effective CPU (20)

Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12Доклад в Mail.ru 01.11.12
Доклад в Mail.ru 01.11.12
 
Лекция 1: Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1: Архитектурно-ориентированная оптимизация программного обеспечения (...Лекция 1: Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1: Архитектурно-ориентированная оптимизация программного обеспечения (...
 
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
Nexus 7000 – архитектура передачи данных. Поиск и устранение неисправностей.
 
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ... Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
Использование C++ для низкоуровневой платформозависимой разработки — Кирилл ...
 
Сеть на Linux
Сеть на LinuxСеть на Linux
Сеть на Linux
 
Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...Создание и развитие отечественной платформы с открытым программным кодом для ...
Создание и развитие отечественной платформы с открытым программным кодом для ...
 
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
Whats new in_mikro_tik_ros_6_(megis,_mosсow_2013)_(russian_translate_by_white...
 
Развитие технологий построения распределенных ЦОД
Развитие технологий построения распределенных ЦОДРазвитие технологий построения распределенных ЦОД
Развитие технологий построения распределенных ЦОД
 
Multimaster2
Multimaster2Multimaster2
Multimaster2
 
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
"Мультимастер для PostgreSQL" Кельвич Станислав, Книжник Константин, PostgresPro
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
 
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchipРазработка OpenFlow-коммутатора на базе сетевого процессора EZchip
Разработка OpenFlow-коммутатора на базе сетевого процессора EZchip
 
Treukhov mclags
Treukhov mclagsTreukhov mclags
Treukhov mclags
 
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
Лекция 1. Архитектурно-ориентированная оптимизация программного обеспечения (...
 
Безопасность Центров Обработки Данных
Безопасность Центров Обработки ДанныхБезопасность Центров Обработки Данных
Безопасность Центров Обработки Данных
 
Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017Вебинар по отказоустойчивости, 13.04.2017
Вебинар по отказоустойчивости, 13.04.2017
 
Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)
Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)
Zabbix: рецепты высокопроизводительного мониторинга / Алексей Владышев (Zabbix)
 
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
Виртуализированные сетевые сервисы на line rate в серверном окружении / Алекс...
 

More from Nadzeya Pus

SETCON'18 - Yauheni Pakala - .NET Embedding
SETCON'18 - Yauheni Pakala - .NET Embedding SETCON'18 - Yauheni Pakala - .NET Embedding
SETCON'18 - Yauheni Pakala - .NET Embedding Nadzeya Pus
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101Nadzeya Pus
 
SETCON'18 - Siarhei Tuzik - Enterprise Orchestration
SETCON'18 - Siarhei Tuzik - Enterprise OrchestrationSETCON'18 - Siarhei Tuzik - Enterprise Orchestration
SETCON'18 - Siarhei Tuzik - Enterprise OrchestrationNadzeya Pus
 
SETCON'18 - Siarhei Skavarodkin - Docker for developers
SETCON'18 - Siarhei Skavarodkin - Docker for developersSETCON'18 - Siarhei Skavarodkin - Docker for developers
SETCON'18 - Siarhei Skavarodkin - Docker for developersNadzeya Pus
 
SETCON'18 - Ilya labacheuski - GraphQL adventures
SETCON'18 - Ilya labacheuski - GraphQL adventuresSETCON'18 - Ilya labacheuski - GraphQL adventures
SETCON'18 - Ilya labacheuski - GraphQL adventuresNadzeya Pus
 
SETCON'18 - Dzmitry Nichyparuk - Designing reliable software
SETCON'18 - Dzmitry Nichyparuk - Designing reliable softwareSETCON'18 - Dzmitry Nichyparuk - Designing reliable software
SETCON'18 - Dzmitry Nichyparuk - Designing reliable softwareNadzeya Pus
 
SETCON'18 - Aleh Toba - Путь из Developer-a в Manager-ы
SETCON'18 - Aleh Toba - Путь из Developer-a в Manager-ы SETCON'18 - Aleh Toba - Путь из Developer-a в Manager-ы
SETCON'18 - Aleh Toba - Путь из Developer-a в Manager-ы Nadzeya Pus
 

More from Nadzeya Pus (7)

SETCON'18 - Yauheni Pakala - .NET Embedding
SETCON'18 - Yauheni Pakala - .NET Embedding SETCON'18 - Yauheni Pakala - .NET Embedding
SETCON'18 - Yauheni Pakala - .NET Embedding
 
SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101SETCON'18 - Vitali Fokin - Kubernetes 101
SETCON'18 - Vitali Fokin - Kubernetes 101
 
SETCON'18 - Siarhei Tuzik - Enterprise Orchestration
SETCON'18 - Siarhei Tuzik - Enterprise OrchestrationSETCON'18 - Siarhei Tuzik - Enterprise Orchestration
SETCON'18 - Siarhei Tuzik - Enterprise Orchestration
 
SETCON'18 - Siarhei Skavarodkin - Docker for developers
SETCON'18 - Siarhei Skavarodkin - Docker for developersSETCON'18 - Siarhei Skavarodkin - Docker for developers
SETCON'18 - Siarhei Skavarodkin - Docker for developers
 
SETCON'18 - Ilya labacheuski - GraphQL adventures
SETCON'18 - Ilya labacheuski - GraphQL adventuresSETCON'18 - Ilya labacheuski - GraphQL adventures
SETCON'18 - Ilya labacheuski - GraphQL adventures
 
SETCON'18 - Dzmitry Nichyparuk - Designing reliable software
SETCON'18 - Dzmitry Nichyparuk - Designing reliable softwareSETCON'18 - Dzmitry Nichyparuk - Designing reliable software
SETCON'18 - Dzmitry Nichyparuk - Designing reliable software
 
SETCON'18 - Aleh Toba - Путь из Developer-a в Manager-ы
SETCON'18 - Aleh Toba - Путь из Developer-a в Manager-ы SETCON'18 - Aleh Toba - Путь из Developer-a в Manager-ы
SETCON'18 - Aleh Toba - Путь из Developer-a в Manager-ы
 

SETCON'18 - Aliaksander Stsepaniuk - Effective CPU