Комментарии 40
Если бы рассказывалось что то новое пришлось бы активно работать,
тратить ресурсы организма.
Поэтому все новое (значит незнакомое) отмечаем знаком «минус» и продолжаем смотреть
«научно технические комиксы».
Зачем создавать новые «нейронные сети в мозгу», а тут все понятно, можно считать себя умным и «глюкоза» не тратится — сплошной профит.
Думаю хабр умер — посмотрите 95% статей это блоги компаний (реклама) и редкие переводы.
Если появляются авторские статьи, никто не утруждается попытками понимания, просто ставят минус (вопросов по существу статьи меньше чем самих статей) (((
Думаю, ненужно сильно «страдать», ну устроен так человеческий мозг.
Не любит он работать и постоянно старается подменить реальное познание на имитацию.
Главное обеспечить комфортное состояние личности с минимальными затратами, а вот «топить» людей которые пытаются думать искать новые идеи это «стремно».
Думаю когда первый предок человека спустился с дерева, оставшиеся «предки» еще долго «какашками » вслед кидались.
Поэтому руки мойте чаще — «предки» )))
И к слову, сам механизм кеширования, которому посвящена статья, тоже базируется на механизме виртуальной памяти, наверное, об этом тоже стоило бы написать.
— (L1 хранит вирт.адрес + тэг(и) не устарела ли адресация
— L2 хранит физ-адрес (а значит нужна поддержка разадресации, вложенных каталогов адресов, TLB — вот это всё).
Т.е. это моменты хоть и очень важные — но технические.
И можно сказать, что более детальные, по сравнению с общей направленностью статьи.
Скорость распространения сигнала практически не зависит от частоты и составляет c/sqrt(Dk).
«Практически», потому что Dk зависит от частоты.
В целом грубое приближение — это 15см за 1нс (если взять Dk=4, то это (3*10ˆ8)/2 м/c).
Видимо Вы имели в виду что электрическая длина DQ может превышать полупериод DQS, что с уменьшением периода DQS уменьшает допустимое расстояние до слота.
На самом деле это просто вопрос с какой Latency контроллер может работать на захват данных. Если Вы, например имеете дело с FPGA — то с любой. Ничего не жмет захватывать данные на 1-2-3-*** клоков позже чем CL чипа памяти. А количество необходимых тактов высчитывается при тренинге.
А Latency в свою очередь дает Вам просадку производительности при работе с памятью малыми пакетами.
Кэш Вам в этом разрезе ну никак не помощник — ведь данные в него должны как-то попасть. Если Вы не можете захватить данные с определенной задержкой — то и в кэш они не попадут тоже.
И конвейер (начать вьіполнять следующую команду до того как закончилась предьідущая) здесь, увьі, не помощник.
Кстати, GPU архитектуры типа CUDA обходят латентность памяти тем, что во время выполнения запроса к памяти мультипроцессор переключается на другую группу потоков, данные для которой уже пришли.
В ячейке SRAM (триггере) два устойчивых состояния (условно называемые 0 и 1): ток всегда течёт или через транзисторы 1 и 3 ИЛИ через транзисторы 2 и 4. Но он всегда течёт, даже если им никто не пользуется — это раз, а время записи равно времени переключения одного транзистора — это два. Всего в схеме триггера обычно 6 транзисторов (пятый и шестой работают для подключения-отключения к шине данных).
В динамической памяти данные хранятся в виде заряда конденсатора, а транзистор в ячейке всего 1 — для подключения/отключения к шине. А при покупке чипов мы грубо говоря платим за количество транзисторов.
А дальше «рыночек порешал», что в 6 (реально в 8) раз больше памяти за те же деньги намного предпочтительнее.
Дальше — хуже. Время заряда (записи) и разряда (чтения) конденсатора пропорционально U*R*С, где C — ёмкость конденсатора, R — сопротивление, U — рабочее напряжение. Проблема в том, что R*C линейно пропорционально зависит от нормы техпроцесса. Т.е. перешли от 100 нм к 10 нм — значит в таких же размеров чипе впихнули в 100 (=10²) раз больше ячеек. Но время их работы осталось тем же! Можно понизить напряжение. Во времена Спектрума было ТТЛ ~4.5 Вольта, к DDR3 плавно упали до ~1.5, в DDR4 ужались до ~1.1 (но это слишком мало для шины на материнской плате, из-за чего пришлось ставить повышающие усилители в процессор и память). Ну вот и всё ускорение. Если 80286 в 1985 работали с памятью на ~100 нс, то сейчас между 20 и 30 нс.
"ток всегда течёт или через транзисторы 1 и 3 ИЛИ через транзисторы 2 и 4. Но он всегда течёт, даже если им никто не пользуется"
В кмоп логике один из транзисторов всегда закрыт, ток не течет, только в момент переключения есть всплеск тока, поэтому и растет потребление с ростом частоты тактирования. В есл или смл логике да, ток течет всегда, но она сейчас если и есть, встречается только на внешних линиях.
Как насчёт слотовых Pentium II и Celeron (например, 300a)У второго кэш работал на полной частоте, в отличие от первого. Размер кэша был в два раза меньше, но при разгоне Celeron был значительно быстрее Pentium'а.
А кеш изначально был заветным и желанным набором микросхем, который стоил как мать.
Эх было время)
И да, самые первые целероны были без кэша L2, но этот этап мы быстро проскочили.
этот этап мы быстро проскочили
Кто как… Celeron 266 (который без L2 кэша) приобретался как затычка для материнки. Типа подкопим денег и потом как ух!
Потом был август-98, когда доллар стал 24 вместо 6. А потом интел перестал выпускать слотовые процессоры.
А потом появился интернет, и оказалось, что именно эти селероны без кэша неплохо гонятся. У меня заработал на 433 МГц и в принципе заводился на 533.
В итоге этот комп (с добавочной памятью и дисками) доработал чуть ли не до 2010 года в качестве пишущей машинки.
А потом интел перестал выпускать слотовые процессоры.
А могли бы купить переходник Socket 370-Slot 1, поставить на него третий пень с ядром Tualatin, и печатали бы и сейчас ;)
ALU и регистровые файлы расположены слева и обведены зелёной рамкой.Это SIMD ALU/RF. Целочисленные правее и не обведены.
twitter.com/trav_downs/status/1257035169019637760
(картинка отражена зеркально)
Вы можете задаться вопросом: почему эти блоки SRAM настолько малы? Почему они не имеют размер в мегабайт?
The PA-8500 has a 512 KB instruction cache and a 1 MB data cache.
(единственный уровень кэша)
Но основная причина их размера в несколько килобайт заключается в том, что при увеличении ёмкости памяти повышается время, необходимое для поиска и получения данных.
И да и нет. Зависит от многих факторов, например от размера страницы.
Оптимальный размер L1D (VIPT) — размер страницы * ассоциативность.
Skylake: 4096 * ассоциативность 8 = 32К, 4-5 тактов.
Tiger Lake: 4096 * ассоциативность 12 = 48К, 5 тактов.
Apple A12: 16384 * ассоциативность 8 = 128K, 4 такта.
Некоторые толстые процессоры (например POWER8, Xeon-E7) не имеют Direct Attach интерфейса к памяти. Вместо этого используется набор SerDes, которые подключаются к специализированной микросхеме, разворачивающей их в DDR на своей стороне. Как правило у нее внутри тоже есть кэш.
Вместо этого используется набор SerDes, которые подключаются к специализированной микросхеме, разворачивающей их в DDR на своей стороне.
т.е. это что-то типа северного моста чипсета материнки с урезанным функционалом?
Хм. Всю жизнь думал, что «8-way» означает возможность одновременно читать из одного блока памяти на 8 разных шин и по 8 разным адресам…
В то же время, вращающемуся жёсткому диску требуются тысячи наносекунд только для нахождения данных на дисках, не говоря уже об их передаче, а твердотельным накопителям — десятки или сотни наносекунд.
Продайте мне партию таких носителей. Тысяча наносекунд — одна микросекунда, миллион наносекунд — одна миллисекунда. Для тех накопителей, которые есть на рынке показатели сильно отличаются от процитированного.
Типичное время поиска 15krpm диска 4 мс, 7200rpm — 7-9 мс. Последовательная запись быстрее 1мс на диск тоже на грани достижимости. Передача данных, кстати, на этом фоне просто мгновенная. Это про "нормальные" диски, без всякого черепичного безумия.
Типичное время доступа (на чтение) у SSD — порядка 100 мкс. На запись — "всё сложно", может быть и 50 мкс (редко) и 2 мс (высокая внутренняя фрагментация, работа на пределе производительности). У Optane более стабильные и шустрые показатели, но ни одного обзора, где бы показали выше 20 мкс не видел, пусть будет 20-50 мкс.
Это всё про блоки 4-64 кб.
Т.е. не "тысячи наносекунд только для нахождения данных на дисках", а "от 5 до 10 миллионов наносекунд". Для SSD не "десятки и сотни наносекунд", а "десятки и сотни тысяч наносекунд"
Но есть ряд вопросов:
1. У вас на картинке есть L0_instruction_cache. Это что?
2. ЕМНИП в статье What any programmer should know about memory было утверждение, что время поиска данных в кэше пропорционально размеру кэша (в кэш-лайнах или в бакэтах, не помню).
Как современные L1 кэши делают поиск быстрее?
Кеш — это SRAM память, как и флешки, SSD.
Только почему по соотношению объем (ГБ) / размер (см2) кеш уступает на порядки?
Флешки и SSD — это flash память, не SRAM. Кратко — flash сравнительно медленная, энергонезависимая, более простая по устройству, чем статическая память. Подробнее — на википедии.
И память кешей и flash — это SRAM, то есть энергонезависимая.
И память кешей и flash — это SRAM, то есть энергонезависимая.
SRAM — это статическая память, а не энергонезависимая. Это ОЗУ, которое не нуждается в регенерации, и ячейки которого построены на триггерах. Flash-память — это энергонезависимое ПЗУ, ячейки которого построены на транзисторах с плавающим затвором, и архитектурно она куда ближе к динамическому ОЗУ, чем к SRAM.
Зачем процессорам нужен кэш и чем отличаются уровни L1, L2, L3