SlideShare a Scribd company logo
Проектирование
высоконагруженных
систем



Лекция №5
Быков Александр
HighLoad. Лекция №5
2
Пока процессоры становятся все быстрее и
многочисленнее ограничивающим фактором для
быстродействия большинства программ остается доступ
к памяти.=
Для получения максимальной производительности при
проектировании программ необходимо учитывать
структуру аппаратного обеспечения и его тесной связки с
функциями ОС.
What Every Programmer Should Know About Memory
Ulrich Drepper, Red Hat Inc., November 21, 2007
HighLoad. Лекция №5
3
▪ 16 CPU: 2 (Sockets) x 4 (Cores) x 2 (Threads per Core)=
▪ 64 CPU: 4 (Sockets) x 8 (Cores) x 2 (Threads per Core)=
=
▪ 16 Gb MEM: 8 Gb x 2 (Channels)=
▪ 192 Gb MEM: 16 Gb х 6 (Channels) x 2 (per Channel)=
=
▪ 2 SATA x 2Tb=
▪ 16 SAS x 300 Gb=
=
▪ 2 NIC x 4 pools=
▪ 4 NIC x 8 pools
Конфигурация типичного сервера
HighLoad. Лекция №5
4
$ lscpu!
=
Architecture: x86_64!
CPU op-mode(s): 32-bit, 64-bit!
Byte Order: Little Endian!
CPU(s): 16!
On-line CPU(s) list: 0-15!
Thread(s) per core: 2!
Core(s) per socket: 4!
CPU socket(s): 2!
NUMA node(s): 2!
Vendor ID: GenuineIntel!
CPU family: 6!
Model: 44!
Stepping: 2!
CPU MHz: 1600.000!
BogoMIPS: 4799.88!
Virtualization: VT-x!
L1d cache: 32K!
L1i cache: 32K!
L2 cache: 256K!
L3 cache: 12288K!
NUMA node0 CPU(s): 0-3,8-11!
NUMA node1 CPU(s): 4-7,12-15!
$ cat /proc/cpuinfo!
=
processor : 0!
vendor_id : GenuineIntel!
cpu family : 6!
model : 44!
model name : Intel(R) Xeon(R) CPU
E5620 @ 2.40GHz!
stepping : 2!
cpu MHz : 1600.000!
cache size : 12288 KB!
physical id : 0!
siblings : 8!
core id : 0!
cpu cores : 4!
apicid : 0!
initial apicid : 0!
fpu : yes!
fpu_exception : yes!
cpuid level : 11!
wp : yes!
bogomips : 4800.59!
clflush size : 64!
cache_alignment : 64!
address sizes : 40 bits physical, 48 bits virtual
HighLoad. Лекция №5
5
# dmidecode!
=
Memory Device!
Array Handle: 0x0035!
Total Width: 72 bits!
Data Width: 64 bits!
Size: 8192 MB!
Form Factor: DIMM!
Set: None!
Locator: DIMM A1!
Bank Locator: CHANNEL A!
Type: Other!
Type Detail: Other!
Speed: 1333 MHz!
Manufacturer: NOT SUPPORT!
Serial Number: NOT SUPPORT!
Asset Tag: NOT SUPPORT!
Part Number: NOT SUPPORT!
# dmidecode!
=
Memory Device!
Array Handle: 0x0035!
Total Width: 72 bits!
Data Width: 64 bits!
Size: 8192 MB!
Form Factor: DIMM!
Set: None!
Locator: DIMM A2!
Bank Locator: CHANNEL A!
Type: Other!
Type Detail: Other!
Speed: 1333 MHz!
Manufacturer: NOT SUPPORT!
Serial Number: NOT SUPPORT!
Asset Tag: NOT SUPPORT!
Part Number: NOT SUPPORT!
=
HighLoad. Лекция №5
6
Отдельно-стоящий контроллер памяти
HighLoad. Лекция №5
7
Контроллер памяти встроенный в процессор
HighLoad. Лекция №5
8
Static RAM
• Транзисторная память=
• Моментальный доступ к ячейке=
• Простой интерфейс доступа к ячейке=
• Дорогая в производстве=
• Потребляет много энергии
HighLoad. Лекция №5
9
Dynamic RAM
• Конденсаторная память=
• Долгая запись/считывание=
• Разрядка при считывании=
• Необходимость обновления ячеек=
• Дешевая в производстве=
• Потребляет немного энергии
HighLoad. Лекция №5
10
Dynamic RAM
HighLoad. Лекция №5
11
SDRAM: Read Timing
64 bit (8 bytes) - data bus=
=
DDR SDRAM:=
Dual-pumped 200MHz bus = 3.2GB/s=
=
DDR2 SDRAM:=
Quad-pumped 200MHz bus = 6.4GB/s=
HighLoad. Лекция №5
12
SDRAM: RAS Precharge
HighLoad. Лекция №5
13
Возможности ускорения
• Читать последовательно данные с запасом=
• Читать без перескоков между рядами=
• Prefetching
HighLoad. Лекция №5
14
CPU Cache: Общий вид
HighLoad. Лекция №5
15
Внутреннее устройство
O – Смещение внутри строки=
S – Идентификатор строки в кеше=
T – Метка внутри строки кеша для привязки к полному адресу =
HighLoad. Лекция №5
16
Скорость доступа
HighLoad. Лекция №2
17
Latency numbers every programmer should know (Jeff Dean)
L1 cache reference 0.5 ns
Branch mispredict 5 ns
L2 cache reference 7 ns
Mutex lock/unlock 25 ns
Main memory reference 100 ns
Compress 1K bytes with Zippy 3,000 ns
Send 2K bytes over 1 Gbps network 20,000 ns
SSD random read 150,000 ns
Read 1 MB sequentially from memory 250,000 ns
Round trip within same datacenter 500,000 ns 0.5 ms
Read 1 MB sequentially from SSD* 1,000,000 ns 1 ms
Disk seek 10,000,000 ns 10 ms
Read 1 MB sequentially from disk 20,000,000 ns 20 ms
Send packet CA->Netherlands->CA 150,000,000 ns 150 ms
HighLoad. Лекция №5
18
Экспериментальное измерение
HighLoad. Лекция №5
19
Последовательный доступ
HighLoad. Лекция №5
20
Случайный доступ
HighLoad. Лекция №5
21
Литература
▪ What Every Programmer Should Know About Memory

http://people.redhat.com/drepper/cpumemory.pdf
HighLoad. Лекция №5
22
Домашнее задание №3
=
• Экспериментально измерить размер кешей разных уровней,
время последовательного и случайного доступа к ним.

Сравнить со спецификацией процессора.
=
• Предоставить отчет с результатами и программу для
измерения на ближайшем семинаре.
СПАСИБО ЗА ВНИМАНИЕ
Быков АлександрH
bykov@corp.mail.ru

More Related Content

PPTX
HighLoad весна 2014 лекция 2
Technopark
 
PPTX
HighLoad весна 2014 лекция 3
Technopark
 
PPTX
HighLoad весна 2014 лекция 6
Technopark
 
PDF
Механика DDoS (Александр Крижановский)
Ontico
 
PDF
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Ontico
 
PDF
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
odnoklassniki.ru
 
PPT
Работа с большими файлами под перлом‎
mayperl
 
PDF
Платформа для видео сроком в квартал. Александр Тоболь.
odnoklassniki.ru
 
HighLoad весна 2014 лекция 2
Technopark
 
HighLoad весна 2014 лекция 3
Technopark
 
HighLoad весна 2014 лекция 6
Technopark
 
Механика DDoS (Александр Крижановский)
Ontico
 
Оптимизация программ для современных процессоров и Linux, Александр Крижановс...
Ontico
 
Кадры решают все, или стриминг видео в «Одноклассниках». Александр Тоболь
odnoklassniki.ru
 
Работа с большими файлами под перлом‎
mayperl
 
Платформа для видео сроком в квартал. Александр Тоболь.
odnoklassniki.ru
 

What's hot (20)

PPTX
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
PDF
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
odnoklassniki.ru
 
PDF
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Ontico
 
PDF
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Ontico
 
PPTX
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Ontico
 
PPTX
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
Ontico
 
PDF
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
PPTX
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Ontico
 
PPTX
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Ontico
 
PDF
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Tanya Denisyuk
 
PDF
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
odnoklassniki.ru
 
PDF
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
Ontico
 
PPTX
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
PDF
Современная операционная система: что надо знать разработчику / Александр Кри...
Ontico
 
PPTX
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Ontico
 
PPTX
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Ontico
 
PDF
Cautious: IPv6 is here / Александр Азимов (Qrator Labs)
Ontico
 
PDF
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Ontico
 
PDF
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Ontico
 
Спасение 6 млн файлов в условиях полного хецнера (Даниил Подольский, Дмитрий ...
Ontico
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
odnoklassniki.ru
 
Разработка высокопроизводительных серверных приложений для Linux/Unix (Алекса...
Ontico
 
Реалтайм статистика скорости работы нативных и веб-приложений у реальных поль...
Ontico
 
Flashcache в mamba.ru / Яковлев Александр Юрьевич (ЗАО Мамба)
Ontico
 
HDD, SSD, RAM, RAID, и кого на ком кэшировать / Михаил Конюхов (Perfect Solut...
Ontico
 
Реализация восстановления после аварий / Сергей Бурладян (Avito)
Ontico
 
SOA: строим свой service mesh / Иван Круглов (Booking.com)
Ontico
 
Эволюция программно-аппаратного обеспечения хранения фотографий в Badoo / Дми...
Ontico
 
Андрей Федоренчик- «Высоконагруженная система с аналитикой на InfoBright»
Tanya Denisyuk
 
Франкенштейнизация Voldemort или key-value данные в Одноклассниках. Роман Ан...
odnoklassniki.ru
 
DPDK в виртуальном коммутаторе Open vSwitch / Александр Джуринский (Selectel)
Ontico
 
Тюним память и сетевой стек в Linux: история перевода высоконагруженных серве...
Ontico
 
Современная операционная система: что надо знать разработчику / Александр Кри...
Ontico
 
Инструменты высоконагруженных проектов - кэширование и очереди, Вячеслав Моск...
Ontico
 
Движок LMDB — особенный чемпион / Юрьев Леонид (Петер-Сервис R&D)
Ontico
 
Cautious: IPv6 is here / Александр Азимов (Qrator Labs)
Ontico
 
NVMf: 5 млн IOPS по сети своими руками / Андрей Николаенко (IBS)
Ontico
 
Что особенного в СУБД для данных в оперативной памяти / Константин Осипов (Ta...
Ontico
 
Ad

Viewers also liked (20)

PDF
Бизнес весна 2014 лекция 4
Technopark
 
PDF
Лекция 11. Вычислительная модель Pregel
Technopark
 
ODP
Rb
Ontico
 
PPTX
Мы - хорошие, а они - плохие. Почему так происходит и что с этим делать
SQALab
 
PPT
Вебинар "Матрица компетенци и построение системы ЗП в ИТ компаниях" и еще инт...
Viktoriya Pridatko
 
PPTX
Классификация стейкхолдеров
Tatyana Belova
 
PPTX
управление заинтересованными сторонами
Vyacheslav Benedichuk
 
PDF
Разработка веб-сервисов осень 2013 лекция 7
Technopark
 
PDF
C++ осень 2012 лекция 3
Technopark
 
PDF
Бизнес весна 2014 лекция 3
Technopark
 
PDF
Бизнес весна 2014 лекция 2
Technopark
 
PDF
Разработка веб-сервисов осень 2013 лекция 12
Technopark
 
PDF
Java весна 2014 лекция 5
Technopark
 
PPTX
Java осень 2012 лекция 4
Technopark
 
PPTX
стейкхолдеры
csrbusinessnetwork102
 
PDF
C++ осень 2013 лекция 1
Technopark
 
PPT
Заинтересованные лица: классификация, выявление, анализ, техники
SQALab
 
PDF
углубленное программирование на C++. лекция no.5 [4.0]
Technopark
 
PDF
C++ весна 2014 лекция 2
Technopark
 
PPT
Корпоративный эгоизм Фридмана 2013
Alexandra Shibina
 
Бизнес весна 2014 лекция 4
Technopark
 
Лекция 11. Вычислительная модель Pregel
Technopark
 
Rb
Ontico
 
Мы - хорошие, а они - плохие. Почему так происходит и что с этим делать
SQALab
 
Вебинар "Матрица компетенци и построение системы ЗП в ИТ компаниях" и еще инт...
Viktoriya Pridatko
 
Классификация стейкхолдеров
Tatyana Belova
 
управление заинтересованными сторонами
Vyacheslav Benedichuk
 
Разработка веб-сервисов осень 2013 лекция 7
Technopark
 
C++ осень 2012 лекция 3
Technopark
 
Бизнес весна 2014 лекция 3
Technopark
 
Бизнес весна 2014 лекция 2
Technopark
 
Разработка веб-сервисов осень 2013 лекция 12
Technopark
 
Java весна 2014 лекция 5
Technopark
 
Java осень 2012 лекция 4
Technopark
 
стейкхолдеры
csrbusinessnetwork102
 
C++ осень 2013 лекция 1
Technopark
 
Заинтересованные лица: классификация, выявление, анализ, техники
SQALab
 
углубленное программирование на C++. лекция no.5 [4.0]
Technopark
 
C++ весна 2014 лекция 2
Technopark
 
Корпоративный эгоизм Фридмана 2013
Alexandra Shibina
 
Ad

Similar to HighLoad весна 2014 лекция 5 (20)

PDF
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Ontico
 
PDF
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Mikhail Kurnosov
 
PDF
TMPA-2013 Sartakov: Genode
Iosif Itkin
 
PDF
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Siel01
 
PDF
Вячеслав Бирюков - Linux инструменты системного администратора
Yandex
 
PPT
Hl2008 Wtf Hl 169
Media Gorod
 
PDF
Platov
kuchinskaya
 
PDF
Флеш в серверах: работа со скоростью вспышки
КРОК
 
PPTX
apparatnoe_obespechenie
Щербатых Галина
 
PDF
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
PDF
Обратная разработка бинарных форматов с помощью Kaitai Struct
Positive Hack Days
 
PPT
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Unigine Corp.
 
PDF
Реактивный раздатчик ok.ru/music
Vadim Tsesko
 
PDF
Hitachi FMD. Новый подход к старой задаче
КРОК
 
PDF
Как Linux работает с памятью — Вячеслав Бирюков
Yandex
 
PDF
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
PPTX
Ловим шеллкоды под ARM
Positive Hack Days
 
PDF
Современные флэш-технологии – от концепции к преимуществам использования // А...
IBS
 
ODP
ногинов Aoe Stripped
Liudmila Li
 
ODP
A O E Stripped
Liudmila Li
 
Практика использования NoSQL в высоконагруженном проекте (Дмитрий Ананьев)
Ontico
 
Лекция 4: Оптимизация доступа к памяти (Memory access optimization, caches)
Mikhail Kurnosov
 
TMPA-2013 Sartakov: Genode
Iosif Itkin
 
Олег Царев, Кирилл Коринский Сравнительный анализ хранилищ данных
Siel01
 
Вячеслав Бирюков - Linux инструменты системного администратора
Yandex
 
Hl2008 Wtf Hl 169
Media Gorod
 
Platov
kuchinskaya
 
Флеш в серверах: работа со скоростью вспышки
КРОК
 
apparatnoe_obespechenie
Щербатых Галина
 
Обработка спйсмоданных: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
Обратная разработка бинарных форматов с помощью Kaitai Struct
Positive Hack Days
 
Низкоуровневые оптимизации. Андрей Аксенов. Unigine Open Air 2013
Unigine Corp.
 
Реактивный раздатчик ok.ru/music
Vadim Tsesko
 
Hitachi FMD. Новый подход к старой задаче
КРОК
 
Как Linux работает с памятью — Вячеслав Бирюков
Yandex
 
Гидродинамическое моделирование: возможности оптимизации ИТ-инфраструктуры
Vsevolod Shabad
 
Ловим шеллкоды под ARM
Positive Hack Days
 
Современные флэш-технологии – от концепции к преимуществам использования // А...
IBS
 
ногинов Aoe Stripped
Liudmila Li
 
A O E Stripped
Liudmila Li
 

More from Technopark (20)

PDF
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
 
PDF
Лекция 13. YARN
Technopark
 
PDF
Лекция 12. Spark
Technopark
 
PDF
Лекция 10. Apache Mahout
Technopark
 
PDF
Лекция 9. ZooKeeper
Technopark
 
PDF
Лекция 7. Введение в Pig и Hive
Technopark
 
PDF
Лекция 6. MapReduce в Hadoop (графы)
Technopark
 
PDF
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
 
PDF
Лекция 4. MapReduce в Hadoop (введение)
Technopark
 
PDF
Лекция 3. Распределённая файловая система HDFS
Technopark
 
PDF
Лекция 2. Основы Hadoop
Technopark
 
PDF
Лекция 1. Введение в Big Data и MapReduce
Technopark
 
PPTX
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
PPT
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
 
PPTX
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
 
PPTX
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
PPTX
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
PPTX
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
 
PPTX
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 
PPTX
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
 
Лекция 14. Hadoop в Поиске Mail.Ru
Technopark
 
Лекция 13. YARN
Technopark
 
Лекция 12. Spark
Technopark
 
Лекция 10. Apache Mahout
Technopark
 
Лекция 9. ZooKeeper
Technopark
 
Лекция 7. Введение в Pig и Hive
Technopark
 
Лекция 6. MapReduce в Hadoop (графы)
Technopark
 
Лекция 5. MapReduce в Hadoop (алгоритмы)
Technopark
 
Лекция 4. MapReduce в Hadoop (введение)
Technopark
 
Лекция 3. Распределённая файловая система HDFS
Technopark
 
Лекция 2. Основы Hadoop
Technopark
 
Лекция 1. Введение в Big Data и MapReduce
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL"
Technopark
 
СУБД 2013 Лекция №10 "Нереляционное решение в области баз данных — NoSQL" Час...
Technopark
 
СУБД 2013 Лекция №9 "Безопасность баз данных"
Technopark
 
СУБД 2013 Лекция №8 "Конфигурирование базы данных"
Technopark
 
СУБД 2013 Лекция №7 "Оптимизация запросов и индексирование"
Technopark
 
СУБД 2013 Лекция №5 "Определение узких мест"
Technopark
 
СУБД 2013 Лекция №6 "Профилирование запросов. Сложноструктурированные SQL-зап...
Technopark
 
СУБД 2013 Лекция №4 "Расширенные возможности работы с базами данных. Триггеры...
Technopark
 

HighLoad весна 2014 лекция 5

  • 2. HighLoad. Лекция №5 2 Пока процессоры становятся все быстрее и многочисленнее ограничивающим фактором для быстродействия большинства программ остается доступ к памяти.= Для получения максимальной производительности при проектировании программ необходимо учитывать структуру аппаратного обеспечения и его тесной связки с функциями ОС. What Every Programmer Should Know About Memory Ulrich Drepper, Red Hat Inc., November 21, 2007
  • 3. HighLoad. Лекция №5 3 ▪ 16 CPU: 2 (Sockets) x 4 (Cores) x 2 (Threads per Core)= ▪ 64 CPU: 4 (Sockets) x 8 (Cores) x 2 (Threads per Core)= = ▪ 16 Gb MEM: 8 Gb x 2 (Channels)= ▪ 192 Gb MEM: 16 Gb х 6 (Channels) x 2 (per Channel)= = ▪ 2 SATA x 2Tb= ▪ 16 SAS x 300 Gb= = ▪ 2 NIC x 4 pools= ▪ 4 NIC x 8 pools Конфигурация типичного сервера
  • 4. HighLoad. Лекция №5 4 $ lscpu! = Architecture: x86_64! CPU op-mode(s): 32-bit, 64-bit! Byte Order: Little Endian! CPU(s): 16! On-line CPU(s) list: 0-15! Thread(s) per core: 2! Core(s) per socket: 4! CPU socket(s): 2! NUMA node(s): 2! Vendor ID: GenuineIntel! CPU family: 6! Model: 44! Stepping: 2! CPU MHz: 1600.000! BogoMIPS: 4799.88! Virtualization: VT-x! L1d cache: 32K! L1i cache: 32K! L2 cache: 256K! L3 cache: 12288K! NUMA node0 CPU(s): 0-3,8-11! NUMA node1 CPU(s): 4-7,12-15! $ cat /proc/cpuinfo! = processor : 0! vendor_id : GenuineIntel! cpu family : 6! model : 44! model name : Intel(R) Xeon(R) CPU E5620 @ 2.40GHz! stepping : 2! cpu MHz : 1600.000! cache size : 12288 KB! physical id : 0! siblings : 8! core id : 0! cpu cores : 4! apicid : 0! initial apicid : 0! fpu : yes! fpu_exception : yes! cpuid level : 11! wp : yes! bogomips : 4800.59! clflush size : 64! cache_alignment : 64! address sizes : 40 bits physical, 48 bits virtual
  • 5. HighLoad. Лекция №5 5 # dmidecode! = Memory Device! Array Handle: 0x0035! Total Width: 72 bits! Data Width: 64 bits! Size: 8192 MB! Form Factor: DIMM! Set: None! Locator: DIMM A1! Bank Locator: CHANNEL A! Type: Other! Type Detail: Other! Speed: 1333 MHz! Manufacturer: NOT SUPPORT! Serial Number: NOT SUPPORT! Asset Tag: NOT SUPPORT! Part Number: NOT SUPPORT! # dmidecode! = Memory Device! Array Handle: 0x0035! Total Width: 72 bits! Data Width: 64 bits! Size: 8192 MB! Form Factor: DIMM! Set: None! Locator: DIMM A2! Bank Locator: CHANNEL A! Type: Other! Type Detail: Other! Speed: 1333 MHz! Manufacturer: NOT SUPPORT! Serial Number: NOT SUPPORT! Asset Tag: NOT SUPPORT! Part Number: NOT SUPPORT! =
  • 7. HighLoad. Лекция №5 7 Контроллер памяти встроенный в процессор
  • 8. HighLoad. Лекция №5 8 Static RAM • Транзисторная память= • Моментальный доступ к ячейке= • Простой интерфейс доступа к ячейке= • Дорогая в производстве= • Потребляет много энергии
  • 9. HighLoad. Лекция №5 9 Dynamic RAM • Конденсаторная память= • Долгая запись/считывание= • Разрядка при считывании= • Необходимость обновления ячеек= • Дешевая в производстве= • Потребляет немного энергии
  • 11. HighLoad. Лекция №5 11 SDRAM: Read Timing 64 bit (8 bytes) - data bus= = DDR SDRAM:= Dual-pumped 200MHz bus = 3.2GB/s= = DDR2 SDRAM:= Quad-pumped 200MHz bus = 6.4GB/s=
  • 13. HighLoad. Лекция №5 13 Возможности ускорения • Читать последовательно данные с запасом= • Читать без перескоков между рядами= • Prefetching
  • 14. HighLoad. Лекция №5 14 CPU Cache: Общий вид
  • 15. HighLoad. Лекция №5 15 Внутреннее устройство O – Смещение внутри строки= S – Идентификатор строки в кеше= T – Метка внутри строки кеша для привязки к полному адресу =
  • 17. HighLoad. Лекция №2 17 Latency numbers every programmer should know (Jeff Dean) L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 25 ns Main memory reference 100 ns Compress 1K bytes with Zippy 3,000 ns Send 2K bytes over 1 Gbps network 20,000 ns SSD random read 150,000 ns Read 1 MB sequentially from memory 250,000 ns Round trip within same datacenter 500,000 ns 0.5 ms Read 1 MB sequentially from SSD* 1,000,000 ns 1 ms Disk seek 10,000,000 ns 10 ms Read 1 MB sequentially from disk 20,000,000 ns 20 ms Send packet CA->Netherlands->CA 150,000,000 ns 150 ms
  • 21. HighLoad. Лекция №5 21 Литература ▪ What Every Programmer Should Know About Memory
 http://people.redhat.com/drepper/cpumemory.pdf
  • 22. HighLoad. Лекция №5 22 Домашнее задание №3 = • Экспериментально измерить размер кешей разных уровней, время последовательного и случайного доступа к ним.
 Сравнить со спецификацией процессора. = • Предоставить отчет с результатами и программу для измерения на ближайшем семинаре.