Еще до того как компания Freescale стала частью NXP, ей пришлось столкнуться с проблемой: мы, сотрудники компании, разработали и изготовили опытные образцы кремниевого 8‑ядерного процессора LS2088A с тактовой частотой 2 ГГц, но, как известно, клиенты всегда хотят чего-то большего. И наши беседы с заказчиками выглядели примерно так:
— Вы говорите, что вам нужен процессор большей производительности. На сколько еще требуется увеличить производительность?
— Мы хотим больше, чем вы нам предлагаете.
— Хорошо, если рынку нужно больше, то насколько больше того, что уже есть?
В итоге нам самим требовалось определиться, в каком направлении двигаться, чего сейчас не хватает на рынке и в нашем портфеле предложений, и, что самое главное, какие новые приложения и примеры применения мы хотели бы предложить своим клиентам.
В качестве одного из вариантов предлагалось просто «набросать» больше всего на следующий чип, но выиграл более взвешенный подход. В этой статье описаны наши размышления в период создания LX2160A — в процессе того, как мы решали стоящие перед нами весьма непростые задачи. Да, мы могли предложить нашим клиентам процессор с рабочей частотой класса 2 ГГц, и он мог иметь вдвое больше ядер LS2088A, но это определенно было бы не просто «больше всего».
Процессор LS2088A как отправная точка нового проекта
Процессор LS2088A содержит восемь ядер Cortex-A72, каждое из которых работает на частоте 2 ГГц. В 2016 году Cortex-A72 был самым результативным ядром ARM. Одним из его преимуществ также было меньшее собственное потребление энергии, чем у его предшественника Cortex-A57. Редко бывает, что ядро может одновременно удовлетворять таким диаметрально противоположным требованиям, как увеличение производительности и сокращение потребления мощности.
Для каждой пары ARM-ядер мы выделили 1 Мбайт кэша второго уровня (L2). В дополнение к этим 4 Мбайт суммарно кэша L2, процессор LS2088A на уровне платформы имеет 1 Мбайт кэша третьего уровня (L3). Благодаря тому что для LS2088A был выбран относительно небольшой кэш третьего уровня, мы смогли максимально использовать область чипа в кэшах L2, которые имеют меньшую задержку при доступе к ядру и, следовательно, оказывают большее влияние на производительность ядра, чем кэш L3. Чтобы получить доступ к основной памяти, мы предоставили процессору LS2088A два 72‑разрядных контроллера DDR4, каждый из которых работал со скоростью 2,1 GT/s (гигатранзакции/с — единица измерения, определяющая количество произведенных операций по пересылке данных в секунду в каком-либо канале связи), а также третий 36‑разрядный контроллер DDR4, предназначенный для работы с данными, полученными через локальную сеть Ethernet. В целевых приложениях LS2088A для обработки сетевых пакетов показывает значительно большую пропускную способность, чем это необходимо, например, пакетным данным и таблицам маршрутизации, а также Ethernet. Результатом этого и стало присутствие третьего контроллера DDR4.
Для внешних высокоскоростных портов ввода/вывода процессор LS2088A имел 16 линий SerDes (сериализатор/десериализатор — пара функциональных блоков, используемых в высокоскоростной связи, чтобы компенсировать ограничения входа/выхода), которые могли быть сконфигурированы для поддержки до четырех контроллеров PCIe Gen3, имевших самую высокую на то время скорость, и 16 MAC-адресов Ethernet, восемь из которых поддерживают до 10 Гбит/с. С точки зрения ускорения LS2088A имеет специализированную компрессию/декомпрессию, сопоставление образцов и сопроцессоры безопасности, а также программируемый AIOP (Advanced IO Processor) для автономной обработки пакетов. AIOP был предназначен для сетевой маршрутизации и переадресации приложений, в которых Ethernet-пакеты прошли через несколько табличных поисков и манипулирование заголовками.
С такой архитектурой LS2088A способен обеспечить общую производительность ядра примерно в 100 тыс. в наборе синтетических тестов производительности для измерения скорости центральных процессоров во встраиваемых системах CoreMark или 81 в рамках теста SPEC CPU2006‑Int. Также процессор способен на простую пересылку DPDK IPv4 со скоростью 40 Гбит/с при размере пакета 128 байт или, используя AIOP, передавать 19,4 Гбит/с сложной переадресации IPv4. Сложная переадресация является прецедентом с тремя точными совпадениями поиска, одним самым длинным поиском соответствия с префиксом и одним поиском списка управления доступом, для каждого пакета до пяти горизонтальных компонентов таблицы, состоящих из последовательности значений, по одному для каждого столбца таблицы. Самое главное, что AIOP мог бы достичь этой скорости при полностью выгруженном из CPU тракте данных, с нулевой загрузкой ядер Cortex-A72.
Новые области приложения
Для процессора LX2160A (рис. 1) мы стремились обеспечить поддержку целого ряда новых приложений. В ходе оптимизации LS2088A для сетевой и беспроводной инфраструктуры мы стремились к тому, чтобы наш продукт мог эффективно использоваться в беспроводной инфраструктуре (которая постепенно движется от 4G LTE к 5G), в области виртуализации сетевых функций (network function virtualization, NFV), для мобильных периферийных вычислений и разгрузки новых типов центров обработки данных и приложений, предназначенных для хранения информации.

Рис. 1. Процессор LX2160A
Выбор технологии оперативной памяти для нового процессора
Нам было хорошо известно, что для перечисленных выше приложений основной проблемой, которую предстоит решить, будет повышение производительности. Вне зависимости от конечного использования приложения редко бывает так, что дополнительные ядра могли бы кому-то помешать и оказаться лишними. Как NFV, так и периферийные вычислительные приложения для приложений более высокого уровня предъявляют все большие требования к производительности самого ядра, а не только к задачам передачи данных или сетевого пакета устройства. Однако если бы ядру была добавлена слишком большая производительность, то в итоге это не принесло бы ожидаемого эффекта, поскольку все ядра ожидали бы доступа к подсистеме памяти и вынужденно простаивали. Часто эта ситуация описывается емкой английской идиомой: “Hitting the memory wall”, что буквально означает «удариться в стену памяти». Именно она, оперативная память, становится здесь камнем преткновения. Поэтому для предполагаемых целевых приложений нам пришлось сначала рассчитать, какая пропускная способность DRAM потребуется при наших ограниченных затратах. Целью стало обеспечение максимально возможной производительности ядра при использовании имеющихся ограничивающих нас пропускных возможностях оперативной памяти.
Память технологии LPDDR4 обеспечивала хорошую пропускную способность. Но поскольку это технология «точка-точка» (в ней нет концепции нескольких банков с выбором чипов, использующих общую шину данных), то есть она в основном является технологией ×32 (ширина шины данных на чип), а не ×16, ×8 или ×4 DDR4, то для наших нужд максимальная пропускная способность системы DRAM, достижимая с LPDDR4, будет слишком мала. Ее разновидности, например GDDR, также обеспечивали хорошую пропускную способность, но камнем преткновения оставалось то, что они достигают полной пропускной способности только для длинных последовательных доступов, что не может быть гарантировано в новой проектируемой системе, с транзакциями, инициированными ядром и с размерами блоков (линий) кэша для потенциально малых пакетов Ethernet.
Нам нужна была технология DRAM, которая также обладала бы хорошей производительностью при когерентном сетевом доступе и при доступе к ней из ядра (оба, как известно, приводят к транзакциям с размерами блоков кэша), поэтому в выборе технологии DRAM мы остановились на данном решении. Другая причина нашей заинтересованности в этом типе памяти заключается в том, чтобы иметь возможность эффективно работать с небольшими Ethernet-пакетами, поскольку здесь, как и во многих других приложениях, система должна с достаточной производительностью обрабатывать полученные Ethernet-пакеты любого размера.
Была также рассмотрена возможность использования на этой же подложке корпуса, что и основной SoC (например, HBM), DRAM в виде многоэтажной 3D-конструкции. Но подобное решение значительно увеличило бы стоимость корпуса, а так как DRAM необходимо было встроить в корпус, вернее в его заданный проектный типоразмер, это тоже ограничило бы суммарную емкость DRAM. Кроме того, поскольку наши процессоры используются в самом широком спектре приложений, прогнозирование точного размера памяти до их производства было крайне проблематично.
Еще одной причиной того, что мы остановились на DDR4, было то, что мы были достаточно хорошо знакомы с данной технологией. Немаловажным стимулом для нашего выбора послужило и то, что к моменту запуска LS2088A на горизонте уже появилась DDR4, работающая на скорости 3,2 GT/s. Таким образом, то же количество и ширина интерфейсов DDR4, как мы планировали, смогут обеспечить нам на 50% большую пропускную способность, чем интерфейсы DDR4 LS2088A с их 2,1 GT/s. Для того чтобы затраты на проектирование печатных плат наших клиентов отвечали оптимальному соотношению при функционально-стоимостном анализе, мы пришли к выводу, что нецелесообразно использовать более двух контроллеров DRAM. Поэтому мы решили остановиться на поддержке двух 72‑разрядных интерфейсов DDR4 на 3,2 GT/s.
Выбор числа ядер и объема кэша для нового проекта
Однако вернемся к проблеме выбора ядра. Когда мы определялись с его архитектурой, то снова обратили внимание на ядро Cortex-A72 и рассмотрели некоторые другие ядра, которые были выпущены после него. Независимо от того, на чем бы мы остановились, нам было необходимо сохранить совместимость с ARM-v8 AARCH64, что связано с проблемой обеспечения совместимости ПО нового процессора с LS2088A с другими продуктами нашего портфеля предложений. Производительность каждого ядра должна была оставаться на одном уровне с Cortex-A72, использованным в LS2088A. При этом шаг назад для однопоточного кода был неприемлем, хотя приложение предназначено для параллелизации обработки в нескольких ядрах и в нем всегда имеется некоторое количество однопоточного кода, например для обработки исключений или управления сетью.
Необходимо отметить, что по соображениям надежности использование в кэшах памяти с коррекцией ошибок (error-correcting code, ECC), как в ядре Cortex-A72, оставалось для нас обязательным. В пределах определенного объема площади кристалла, а следовательно, и стоимости выделенная для процессора производительность не могла быть снижена. Примечательно, что с этим набором требований оптимальным по-прежнему оставалось ядро Cortex-A72, хотя мы немного изменили его скорость (с 2 до 2,2 ГГц), но по своей сути это по-прежнему было то же ядро.
Определив и установив приемлемую пропускную способность DRAM для чипа и ядра, которые мы используем, мы рассчитали количество ядер. Для этого был проведен и проанализирован ряд сравнительных тестов по оценке производительности процессоров с различными архитектурами и различными реализациями одной архитектуры, эталонных тестов, как государственных, так и собственной разработки. Для оценки производительности центрального процессорного узла CPU, кэша и DRAM использовались традиционные тесты. Специальные тесты, разработанные компанией, которые мы создали для обработки пакетов, содержали несколько приложений с точно определенными реперными точками. Все эти результаты соответствовали результатам частей пакета SPEC CPU2006‑Int, которые имеют меньшее количество обращений к кэшу и, таким образом, усиливают нагрузку DRAM (например, тесты xalankbmk и gcc). Нами было выработано эмпирическое правило: требовалось приблизительно 0,9 Гбайт/с на каждый гигагерц тактовой шины CPU. Используя это правило и рассмотрев эффективность DRAM, мы пришли к выводу, что можно решить поставленную задачу с 16 ядрами Cortex-A72 (16 × 0,9 Гбайт/с × 2,2 ГГц) в практически доступной полосе пропускания 31 Гбайт/с DRAM (3,2 GT/s × 8 байт/цикл × 2 контроллера DDR × 60% среднего использования DRAM).
Для более эффективного использования всех возможностей в части пропускной способности DRAM мы значительно увеличили размер кэша платформы в когерентном межсоединении: от 1 Мбайт, доступного для процессора LS2088A, до 8 Мбайт. Хотя этот кэш, благодаря тому что он выступает в роли так называемого Victim Cache (дословно «кэш жертв», то есть небольшой специализированный кэш, хранящий те блоки кэша, которые были недавно вытеснены из основного кэша микропроцессора при их замещении), обеспечивает некоторую выгоду для основного трафика при наличии восьми устройств кэш-памяти второго уровня ядра кластера. Основным преимуществом кэша платформы LX2160 является снижение давления на пропускную способность DRAM для инициаторов ввода/вывода (Ethernet и PCI Express). Эти данные записываются в DRAM одним инициатором, а затем могут быть прочитаны другим инициатором прежде, чем он будет выведен из кэша. В общем, к этому небольшому кэшу с ранее записанными данными и замененными новыми данными обращаются чаще, чем в случае с большим кэшем. Поэтому большой кэш, предусмотренный в LX2160, помогает сохранить данные в кэше дольше. Чем дольше данные находятся в кэше, тем больше вероятность, что они все еще будут в кэше в то время, когда эти данные будут востребованы.
Выбор PCIe, SerDes и сжатие данных
Определить, что необходимо для рабочих нагрузок с преобладанием ядра, было, условно говоря, наиболее легкой частью. Более сложная работа заключалась в разработке того, что еще требуется для дополнительных рабочих нагрузок.
Одной из задач, которые мы хотели решить, стала разработка правильного сочетания производительности на ватт, освобождение от излишней загрузки центров обработки данных и корпоративных решений для хранения информации. Нам нужно было придерживаться строгих, точно выверенных решений для обеспечения высокой доступности и двухконтроллерной архитектуры уже существующих систем хранения данных. Эти системы, кстати, также являются базовым проектом решений не только для горячего хранения данных нового поколения, но и для более совершенных систем хранения объектов и масштабируемых программно-определяемых хранилищ (software designed storage, SDS).
Процессор LX2160A был разработан так, чтобы обеспечивать высокопроизводительные архитектуры передачи данных там, где порт I/O подключается через новые интерфейсы с высокой пропускной способностью, например адаптер (Converged Network Adapter, CNA) конвергентной сети 25, 50 и 100 Гбит/с со стороны сети, а также контроллеры (Serial Attached SCSI, SAS) для хранилищ данных на уровне предприятий или PCIe для твердотельных NVMe SSD-накопителей (NVMe — Non-Volatile Memory Host Controller Interface Specification), спецификация на протоколы доступа к твердотельным накопителям (SSD), подключенным по шине PCI Express. NVM в названии спецификации обозначает энергонезависимую память, в качестве которой в SSD повсеместно используется флэш-память типа NAND. — прим. пер.). Контроллеры DMA были выбраны с учетом того, чтобы позволить копиям данных, которыми обмениваются контроллеры, поддерживать функциональность непрозрачного моста (non-transparent bridging, NTB).
Благодаря комбинации из 16 ядер Cortex-A72 и возможности аппаратного ускорения для сжатия, шифрования и дедубликации (устранение дублирования данных) мы сконцентрировали внимание на преимуществах производительности, мощности и функциональности, необходимых для новых задач центров обработки данных, таких как разгрузка от лишних вычислений и приближение хранения информации непосредственно к области вычислений — например, использование интеллектуальных SSD-устройств. С увеличением требований к виртуализации для твердотельных накопителей и наращиванием их мощностей приближение хранилищ информации непосредственно к области вычислений становится все более актуальной задачей.
В таких приложениях процессор LX2160A действует как контроллер хранения данных, расположенный между серверным процессором (подключенным через адаптер шины хоста через PCIe) и устройствами хранения (жесткий диск или SSD, подключенный через контроллер ввода/вывода PCIe). Поскольку системная избыточность в таких корпоративных системах крайне важна, то здесь может быть несколько контроллеров хранения копий данных, причем избыточные копии данных передаются между контроллерами хранилища, так что если одна система выходит из строя, данные не теряются. По сути, в систему-на-кристалле (SoC) через PCIe (и в некоторой степени также Ethernet) поступает множество данных. Кроме того, здесь требуется шифрование/дешифрование, компрессия/декомпрессия и копирование данных через прямой доступ к памяти (Direct memory access, DMA — режим обмена данными между устройствами компьютера) с их переносом из одного места в другое.
Размеры блоков относительно велики (порядка килобайт, а не единиц байт), и поэтому эффективность DRAM здесь может быть выше, чем для сетевых транзакций, а потребление ресурсов для того, чтобы определить, что делать с пакетом или блоком данных, будет минимально и сравнимо со временем передачи данных. Это позволило нам сосредоточиться на оптимизации LX2160A для перемещения больших блоков данных в SoC для интерфейсов PCIe Gen4 и из него. Блок-схема контроллера хранения данных представлена на рис. 2.

Рис. 2. Блок-схема контроллера хранения данных
В ходе определения архитектуры процессора LX2160A мы знали, что шина PCI Express четвертого поколения (PCIe Gen4) будет постоянно использоваться в течение всего срока службы процессора, так что ее включение даже не подлежит обсуждению. Она предлагает теоретические 16 Гбит/с на линию по сравнению с 8 Гбит/с шины третьего поколения, которая использовалась в архитектуре базового процессора LS2088A. LS2088A имеет 16 линий SerDes, разделяемых между PCIe и Ethernet. Для нового процессора даже при удвоенной скорости передачи данных 16 линий SerDes было бы явно недостаточно. Целью нового продукта при работе с хранилищем данных было использование восьми дорожек PCIe Gen4 для передачи данных на сервер или с сервера. Этот трафик также должен выйти на устройство хранения данных, а потому для подключения I/O‑контроллеров к накопителю, будь то HDD или SSD, необходимо еще восемь дополнительных линий. А для подсоединения к идентичному LX2160A для резервирования потребовались бы еще восемь дорожек SerDes. В конечном итоге это означало, что разрабатываемому процессору LX2160A нужна не только шина PCIe Gen4, но и 24 линии с такой пропускной способностью.
Поскольку мы имеем трафик, поступающий с сервера, плюс потенциальный из идентичного резервного LX2160A, то наш проект должен поддерживать значительный объем компрессии/декомпрессии трафика, который приводит к аппаратным затратам на механизм компрессии/декомпрессии данных. Хотя механизм безопасности требовался в случае использования хранилища, его объем лучше всего объяснять с помощью DPDK IPv4 forward на примере IPsec, описанного ниже.
Ethernet и требования безопасности
Другим ключевым моментом в части применения LX2160A, выбранного для оптимизации процессора, был DPDK2 IPv4 с IPsec (сокращение от IP Security — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, особенно для таких приложений, как инфраструктура беспроводной сети 5G). IPsec очень похож на прецедентный вариант использования DPDK IPv4 (Data Plane Development Kit — DPDK, представляет собой набор библиотек данных и драйверов сетевого интерфейса для быстрой обработки пакетов, которые в настоящее время управляются как проект с открытым исходным кодом под Linux Foundation. — прим. пер), оптимизированный для LS2088A, за исключением того, что здесь требуется шифрование или дешифрование каждому пакету. Поскольку все больше частных данных хранится в облаке и передается через Интернет, вопросы безопасности приобретают еще большее значение. IPsec гарантирует, что все данные полезной нагрузки будут зашифрованы. В итоге использование IPsec предотвратит перехват конфиденциальной информации.
Однако, в отличие от базового процессора LS2088A, новый продукт был намеренно не оптимизирован для сложной пересылки и табличного поиска вверх до пяти. Это связано с тем, что во многих приложениях кэширование потоков может использоваться так, что только первый пакет в потоке должен проходить через таблицы поиска сложной пересылки. Если в среднем в течение всего потока мы имеем много пакетов, то поток можно кэшировать, чтобы не выполнять поиск по каждому пакету отдельно. Из-за пересмотра концепции этого приложения ускорение табличного поиска AIOP для данного продукта не требовалось, что позволило разработчикам LX2160A больше сосредоточиться на других ключевых моментах его использования.
В процессе создания LS2088A, решая проблему обработки широкого диапазона размеров пакетов, мы оптимизировали LX2160A именно для достижения максимальной скорости передачи данных IPsec с большими размерами пакетов. Новый процессор может выполнять переадресацию с IPv4 на IPsec со скоростью до 50 Гбит/с. Это в 2,5 раза превышает максимальную скорость передачи данных у LS2088A. При проектировании мы нацелились на этот показатель, потому что, хотя на некоторых рынках сетевой обработки (например, для LS2088A скорость была оптимизирована), возможно, это имело место с меньшими средними размерами пакетов, LX2160A был оптимизирован именно для размеров пакетов приложения инфраструктуры хранения данных и для беспроводной сети 5G. Улучшение архитектуры LX2160A под различные приложения и снижение скорости передачи пакетов позволило оптимизировать чип для высоких скоростей передачи данных, не перегружая его обработкой пакетов.
Однако с точки зрения Ethernet целевые показатели производительности были выше скорости 10 Гбит/с, поддерживаемой MAC-адресами LS2088A, — 25, 40, 50 и 100 Гбит/с Ethernet стали обычным делом, и нам нужно было поддерживать их. С этой целью два MAC-порта были оснащены поддержкой 40, 50 и 100 Гбит/с Ethernet. Эта максимальная скорость Ethernet была 10‑кратным увеличением по сравнению с 10 Гбит/с LS2088A благодаря добавлению необходимого потенциала для передачи данных на больших скоростях, что ранее было невозможно. В корпоративных приложениях часто требуется два порта с максимальной скоростью — для резервирования или для поддержки bump in the wire (Bump in the Wire также известен как Transparent Firewall. Является сервером кэширования, но исключает конфигурацию на стороне клиента. В прозрачном режиме работы файервол располагается внутри подсети — на сетевом шлюзе. Благодаря этому у него есть возможность фильтровать трафик между хостами подсети. В данном случае клиент также не знает о существовании файервола, который опосредует его запросы, поэтому на клиентских машинах не требуется прописывать настройки сервера. — прим. пер.) с одним портом Ethernet и другим выходом. Всего на LX2160A представлено 16 MAC-адресов. При этом можно использовать такие варианты, как 16 1G Ethernet для подключения к широкому диапазону устройств в системе с коммутацией L2, поддерживаемой на аппаратных средствах процессора, или же до шести 25 Гбит/с Ethernet для других приложений, в том числе для дата-центров, где часто развертывается именно 25 Гбит/с Ethernet. Итоговый вариант решения чипа LX2160A приведен на рис. 3.

Рис. 3. Итоговый вариант решения чипа LX2160A
Заключение
К созданию процессора LX2160A привели вдумчивый анализ и должная оценка требований клиентов. По сравнению с базовым процессором LS2088A он имеет удвоенное количество ядер, в восемь раз больше кэша платформы, в 1,5 раза большую пропускную способность DRAM, в три раза превышает пропускную способность PCIe и в 10 раз максимальную скорость Ethernet. Комбинированный набор функций не отражает простой подход «всего и побольше». Вместо этого мы тщательно проанализировали текущие и будущие варианты использования нового процессора и надеемся, что создали достойную SoC для дальнейшей эффективной реализации. Узнать больше о процессоре LX2160A можно на сайте компании [1].
Еще до того как компания Freescale стала частью NXP, ей пришлось столкнуться с проблемой: мы, сотрудники компании, разработали и изготовили опытные образцы кремниевого 8‑ядерного процессора LS2088A с тактовой частотой 2 ГГц, но, как известно, клиенты всегда хотят чего-то большего. И наши беседы с заказчиками выглядели примерно так:
— Вы говорите, что вам нужен процессор большей производительности. На сколько еще требуется увеличить производительность?
— Мы хотим больше, чем вы нам предлагаете.
— Хорошо, если рынку нужно больше, то насколько больше того, что уже есть?
В итоге нам самим требовалось определиться, в каком направлении двигаться, чего сейчас не хватает на рынке и в нашем портфеле предложений, и, что самое главное, какие новые приложения и примеры применения мы хотели бы предложить своим клиентам.
В качестве одного из вариантов предлагалось просто «набросать» больше всего на следующий чип, но выиграл более взвешенный подход. В этой статье описаны наши размышления в период создания LX2160A — в процессе того, как мы решали стоящие перед нами весьма непростые задачи. Да, мы могли предложить нашим клиентам процессор с рабочей частотой класса 2 ГГц, и он мог иметь вдвое больше ядер LS2088A, но это определенно было бы не просто «больше всего».
Процессор LS2088A как отправная точка нового проекта
Процессор LS2088A содержит восемь ядер Cortex-A72, каждое из которых работает на частоте 2 ГГц. В 2016 году Cortex-A72 был самым результативным ядром ARM. Одним из его преимуществ также было меньшее собственное потребление энергии, чем у его предшественника Cortex-A57. Редко бывает, что ядро может одновременно удовлетворять таким диаметрально противоположным требованиям, как увеличение производительности и сокращение потребления мощности.
Для каждой пары ARM-ядер мы выделили 1 Мбайт кэша второго уровня (L2). В дополнение к этим 4 Мбайт суммарно кэша L2, процессор LS2088A на уровне платформы имеет 1 Мбайт кэша третьего уровня (L3). Благодаря тому что для LS2088A был выбран относительно небольшой кэш третьего уровня, мы смогли максимально использовать область чипа в кэшах L2, которые имеют меньшую задержку при доступе к ядру и, следовательно, оказывают большее влияние на производительность ядра, чем кэш L3. Чтобы получить доступ к основной памяти, мы предоставили процессору LS2088A два 72‑разрядных контроллера DDR4, каждый из которых работал со скоростью 2,1 GT/s (гигатранзакции/с — единица измерения, определяющая количество произведенных операций по пересылке данных в секунду в каком-либо канале связи), а также третий 36‑разрядный контроллер DDR4, предназначенный для работы с данными, полученными через локальную сеть Ethernet. В целевых приложениях LS2088A для обработки сетевых пакетов показывает значительно большую пропускную способность, чем это необходимо, например, пакетным данным и таблицам маршрутизации, а также Ethernet. Результатом этого и стало присутствие третьего контроллера DDR4.
Для внешних высокоскоростных портов ввода/вывода процессор LS2088A имел 16 линий SerDes (сериализатор/десериализатор — пара функциональных блоков, используемых в высокоскоростной связи, чтобы компенсировать ограничения входа/выхода), которые могли быть сконфигурированы для поддержки до четырех контроллеров PCIe Gen3, имевших самую высокую на то время скорость, и 16 MAC-адресов Ethernet, восемь из которых поддерживают до 10 Гбит/с. С точки зрения ускорения LS2088A имеет специализированную компрессию/декомпрессию, сопоставление образцов и сопроцессоры безопасности, а также программируемый AIOP (Advanced IO Processor) для автономной обработки пакетов. AIOP был предназначен для сетевой маршрутизации и переадресации приложений, в которых Ethernet-пакеты прошли через несколько табличных поисков и манипулирование заголовками.
С такой архитектурой LS2088A способен обеспечить общую производительность ядра примерно в 100 тыс. в наборе синтетических тестов производительности для измерения скорости центральных процессоров во встраиваемых системах CoreMark или 81 в рамках теста SPEC CPU2006‑Int. Также процессор способен на простую пересылку DPDK IPv4 со скоростью 40 Гбит/с при размере пакета 128 байт или, используя AIOP, передавать 19,4 Гбит/с сложной переадресации IPv4. Сложная переадресация является прецедентом с тремя точными совпадениями поиска, одним самым длинным поиском соответствия с префиксом и одним поиском списка управления доступом, для каждого пакета до пяти горизонтальных компонентов таблицы, состоящих из последовательности значений, по одному для каждого столбца таблицы. Самое главное, что AIOP мог бы достичь этой скорости при полностью выгруженном из CPU тракте данных, с нулевой загрузкой ядер Cortex-A72.
Новые области приложения
Для процессора LX2160A (рис. 1) мы стремились обеспечить поддержку целого ряда новых приложений. В ходе оптимизации LS2088A для сетевой и беспроводной инфраструктуры мы стремились к тому, чтобы наш продукт мог эффективно использоваться в беспроводной инфраструктуре (которая постепенно движется от 4G LTE к 5G), в области виртуализации сетевых функций (network function virtualization, NFV), для мобильных периферийных вычислений и разгрузки новых типов центров обработки данных и приложений, предназначенных для хранения информации.
Выбор технологии оперативной памяти для нового процессора
Нам было хорошо известно, что для перечисленных выше приложений основной проблемой, которую предстоит решить, будет повышение производительности. Вне зависимости от конечного использования приложения редко бывает так, что дополнительные ядра могли бы кому-то помешать и оказаться лишними. Как NFV, так и периферийные вычислительные приложения для приложений более высокого уровня предъявляют все большие требования к производительности самого ядра, а не только к задачам передачи данных или сетевого пакета устройства. Однако если бы ядру была добавлена слишком большая производительность, то в итоге это не принесло бы ожидаемого эффекта, поскольку все ядра ожидали бы доступа к подсистеме памяти и вынужденно простаивали. Часто эта ситуация описывается емкой английской идиомой: “Hitting the memory wall”, что буквально означает «удариться в стену памяти». Именно она, оперативная память, становится здесь камнем преткновения. Поэтому для предполагаемых целевых приложений нам пришлось сначала рассчитать, какая пропускная способность DRAM потребуется при наших ограниченных затратах. Целью стало обеспечение максимально возможной производительности ядра при использовании имеющихся ограничивающих нас пропускных возможностях оперативной памяти.
Память технологии LPDDR4 обеспечивала хорошую пропускную способность. Но поскольку это технология «точка-точка» (в ней нет концепции нескольких банков с выбором чипов, использующих общую шину данных), то есть она в основном является технологией ×32 (ширина шины данных на чип), а не ×16, ×8 или ×4 DDR4, то для наших нужд максимальная пропускная способность системы DRAM, достижимая с LPDDR4, будет слишком мала. Ее разновидности, например GDDR, также обеспечивали хорошую пропускную способность, но камнем преткновения оставалось то, что они достигают полной пропускной способности только для длинных последовательных доступов, что не может быть гарантировано в новой проектируемой системе, с транзакциями, инициированными ядром и с размерами блоков (линий) кэша для потенциально малых пакетов Ethernet.
Нам нужна была технология DRAM, которая также обладала бы хорошей производительностью при когерентном сетевом доступе и при доступе к ней из ядра (оба, как известно, приводят к транзакциям с размерами блоков кэша), поэтому в выборе технологии DRAM мы остановились на данном решении. Другая причина нашей заинтересованности в этом типе памяти заключается в том, чтобы иметь возможность эффективно работать с небольшими Ethernet-пакетами, поскольку здесь, как и во многих других приложениях, система должна с достаточной производительностью обрабатывать полученные Ethernet-пакеты любого размера.
Была также рассмотрена возможность использования на этой же подложке корпуса, что и основной SoC (например, HBM), DRAM в виде многоэтажной 3D-конструкции. Но подобное решение значительно увеличило бы стоимость корпуса, а так как DRAM необходимо было встроить в корпус, вернее в его заданный проектный типоразмер, это тоже ограничило бы суммарную емкость DRAM. Кроме того, поскольку наши процессоры используются в самом широком спектре приложений, прогнозирование точного размера памяти до их производства было крайне проблематично.
Еще одной причиной того, что мы остановились на DDR4, было то, что мы были достаточно хорошо знакомы с данной технологией. Немаловажным стимулом для нашего выбора послужило и то, что к моменту запуска LS2088A на горизонте уже появилась DDR4, работающая на скорости 3,2 GT/s. Таким образом, то же количество и ширина интерфейсов DDR4, как мы планировали, смогут обеспечить нам на 50% большую пропускную способность, чем интерфейсы DDR4 LS2088A с их 2,1 GT/s. Для того чтобы затраты на проектирование печатных плат наших клиентов отвечали оптимальному соотношению при функционально-стоимостном анализе, мы пришли к выводу, что нецелесообразно использовать более двух контроллеров DRAM. Поэтому мы решили остановиться на поддержке двух 72‑разрядных интерфейсов DDR4 на 3,2 GT/s.
Выбор числа ядер и объема кэша для нового проекта
Однако вернемся к проблеме выбора ядра. Когда мы определялись с его архитектурой, то снова обратили внимание на ядро Cortex-A72 и рассмотрели некоторые другие ядра, которые были выпущены после него. Независимо от того, на чем бы мы остановились, нам было необходимо сохранить совместимость с ARM-v8 AARCH64, что связано с проблемой обеспечения совместимости ПО нового процессора с LS2088A с другими продуктами нашего портфеля предложений. Производительность каждого ядра должна была оставаться на одном уровне с Cortex-A72, использованным в LS2088A. При этом шаг назад для однопоточного кода был неприемлем, хотя приложение предназначено для параллелизации обработки в нескольких ядрах и в нем всегда имеется некоторое количество однопоточного кода, например для обработки исключений или управления сетью.
Необходимо отметить, что по соображениям надежности использование в кэшах памяти с коррекцией ошибок (error-correcting code, ECC), как в ядре Cortex-A72, оставалось для нас обязательным. В пределах определенного объема площади кристалла, а следовательно, и стоимости выделенная для процессора производительность не могла быть снижена. Примечательно, что с этим набором требований оптимальным по-прежнему оставалось ядро Cortex-A72, хотя мы немного изменили его скорость (с 2 до 2,2 ГГц), но по своей сути это по-прежнему было то же ядро.
Определив и установив приемлемую пропускную способность DRAM для чипа и ядра, которые мы используем, мы рассчитали количество ядер. Для этого был проведен и проанализирован ряд сравнительных тестов по оценке производительности процессоров с различными архитектурами и различными реализациями одной архитектуры, эталонных тестов, как государственных, так и собственной разработки. Для оценки производительности центрального процессорного узла CPU, кэша и DRAM использовались традиционные тесты. Специальные тесты, разработанные компанией, которые мы создали для обработки пакетов, содержали несколько приложений с точно определенными реперными точками. Все эти результаты соответствовали результатам частей пакета SPEC CPU2006‑Int, которые имеют меньшее количество обращений к кэшу и, таким образом, усиливают нагрузку DRAM (например, тесты xalankbmk и gcc). Нами было выработано эмпирическое правило: требовалось приблизительно 0,9 Гбайт/с на каждый гигагерц тактовой шины CPU. Используя это правило и рассмотрев эффективность DRAM, мы пришли к выводу, что можно решить поставленную задачу с 16 ядрами Cortex-A72 (16 × 0,9 Гбайт/с × 2,2 ГГц) в практически доступной полосе пропускания 31 Гбайт/с DRAM (3,2 GT/s × 8 байт/цикл × 2 контроллера DDR × 60% среднего использования DRAM).
Для более эффективного использования всех возможностей в части пропускной способности DRAM мы значительно увеличили размер кэша платформы в когерентном межсоединении: от 1 Мбайт, доступного для процессора LS2088A, до 8 Мбайт. Хотя этот кэш, благодаря тому что он выступает в роли так называемого Victim Cache (дословно «кэш жертв», то есть небольшой специализированный кэш, хранящий те блоки кэша, которые были недавно вытеснены из основного кэша микропроцессора при их замещении), обеспечивает некоторую выгоду для основного трафика при наличии восьми устройств кэш-памяти второго уровня ядра кластера. Основным преимуществом кэша платформы LX2160 является снижение давления на пропускную способность DRAM для инициаторов ввода/вывода (Ethernet и PCI Express). Эти данные записываются в DRAM одним инициатором, а затем могут быть прочитаны другим инициатором прежде, чем он будет выведен из кэша. В общем, к этому небольшому кэшу с ранее записанными данными и замененными новыми данными обращаются чаще, чем в случае с большим кэшем. Поэтому большой кэш, предусмотренный в LX2160, помогает сохранить данные в кэше дольше. Чем дольше данные находятся в кэше, тем больше вероятность, что они все еще будут в кэше в то время, когда эти данные будут востребованы.
Выбор PCIe, SerDes и сжатие данных
Определить, что необходимо для рабочих нагрузок с преобладанием ядра, было, условно говоря, наиболее легкой частью. Более сложная работа заключалась в разработке того, что еще требуется для дополнительных рабочих нагрузок.
Одной из задач, которые мы хотели решить, стала разработка правильного сочетания производительности на ватт, освобождение от излишней загрузки центров обработки данных и корпоративных решений для хранения информации. Нам нужно было придерживаться строгих, точно выверенных решений для обеспечения высокой доступности и двухконтроллерной архитектуры уже существующих систем хранения данных. Эти системы, кстати, также являются базовым проектом решений не только для горячего хранения данных нового поколения, но и для более совершенных систем хранения объектов и масштабируемых программно-определяемых хранилищ (software designed storage, SDS).
Процессор LX2160A был разработан так, чтобы обеспечивать высокопроизводительные архитектуры передачи данных там, где порт I/O подключается через новые интерфейсы с высокой пропускной способностью, например адаптер (Converged Network Adapter, CNA) конвергентной сети 25, 50 и 100 Гбит/с со стороны сети, а также контроллеры (Serial Attached SCSI, SAS) для хранилищ данных на уровне предприятий или PCIe для твердотельных NVMe SSD-накопителей (NVMe — Non-Volatile Memory Host Controller Interface Specification), спецификация на протоколы доступа к твердотельным накопителям (SSD), подключенным по шине PCI Express. NVM в названии спецификации обозначает энергонезависимую память, в качестве которой в SSD повсеместно используется флэш-память типа NAND. — прим. пер.). Контроллеры DMA были выбраны с учетом того, чтобы позволить копиям данных, которыми обмениваются контроллеры, поддерживать функциональность непрозрачного моста (non-transparent bridging, NTB).
Благодаря комбинации из 16 ядер Cortex-A72 и возможности аппаратного ускорения для сжатия, шифрования и дедубликации (устранение дублирования данных) мы сконцентрировали внимание на преимуществах производительности, мощности и функциональности, необходимых для новых задач центров обработки данных, таких как разгрузка от лишних вычислений и приближение хранения информации непосредственно к области вычислений — например, использование интеллектуальных SSD-устройств. С увеличением требований к виртуализации для твердотельных накопителей и наращиванием их мощностей приближение хранилищ информации непосредственно к области вычислений становится все более актуальной задачей.
В таких приложениях процессор LX2160A действует как контроллер хранения данных, расположенный между серверным процессором (подключенным через адаптер шины хоста через PCIe) и устройствами хранения (жесткий диск или SSD, подключенный через контроллер ввода/вывода PCIe). Поскольку системная избыточность в таких корпоративных системах крайне важна, то здесь может быть несколько контроллеров хранения копий данных, причем избыточные копии данных передаются между контроллерами хранилища, так что если одна система выходит из строя, данные не теряются. По сути, в систему-на-кристалле (SoC) через PCIe (и в некоторой степени также Ethernet) поступает множество данных. Кроме того, здесь требуется шифрование/дешифрование, компрессия/декомпрессия и копирование данных через прямой доступ к памяти (Direct memory access, DMA — режим обмена данными между устройствами компьютера) с их переносом из одного места в другое.
Размеры блоков относительно велики (порядка килобайт, а не единиц байт), и поэтому эффективность DRAM здесь может быть выше, чем для сетевых транзакций, а потребление ресурсов для того, чтобы определить, что делать с пакетом или блоком данных, будет минимально и сравнимо со временем передачи данных. Это позволило нам сосредоточиться на оптимизации LX2160A для перемещения больших блоков данных в SoC для интерфейсов PCIe Gen4 и из него. Блок-схема контроллера хранения данных представлена на рис. 2.
В ходе определения архитектуры процессора LX2160A мы знали, что шина PCI Express четвертого поколения (PCIe Gen4) будет постоянно использоваться в течение всего срока службы процессора, так что ее включение даже не подлежит обсуждению. Она предлагает теоретические 16 Гбит/с на линию по сравнению с 8 Гбит/с шины третьего поколения, которая использовалась в архитектуре базового процессора LS2088A. LS2088A имеет 16 линий SerDes, разделяемых между PCIe и Ethernet. Для нового процессора даже при удвоенной скорости передачи данных 16 линий SerDes было бы явно недостаточно. Целью нового продукта при работе с хранилищем данных было использование восьми дорожек PCIe Gen4 для передачи данных на сервер или с сервера. Этот трафик также должен выйти на устройство хранения данных, а потому для подключения I/O‑контроллеров к накопителю, будь то HDD или SSD, необходимо еще восемь дополнительных линий. А для подсоединения к идентичному LX2160A для резервирования потребовались бы еще восемь дорожек SerDes. В конечном итоге это означало, что разрабатываемому процессору LX2160A нужна не только шина PCIe Gen4, но и 24 линии с такой пропускной способностью.
Поскольку мы имеем трафик, поступающий с сервера, плюс потенциальный из идентичного резервного LX2160A, то наш проект должен поддерживать значительный объем компрессии/декомпрессии трафика, который приводит к аппаратным затратам на механизм компрессии/декомпрессии данных. Хотя механизм безопасности требовался в случае использования хранилища, его объем лучше всего объяснять с помощью DPDK IPv4 forward на примере IPsec, описанного ниже.
Ethernet и требования безопасности
Другим ключевым моментом в части применения LX2160A, выбранного для оптимизации процессора, был DPDK2 IPv4 с IPsec (сокращение от IP Security — набор протоколов для обеспечения защиты данных, передаваемых по межсетевому протоколу IP, особенно для таких приложений, как инфраструктура беспроводной сети 5G). IPsec очень похож на прецедентный вариант использования DPDK IPv4 (Data Plane Development Kit — DPDK, представляет собой набор библиотек данных и драйверов сетевого интерфейса для быстрой обработки пакетов, которые в настоящее время управляются как проект с открытым исходным кодом под Linux Foundation. — прим. пер), оптимизированный для LS2088A, за исключением того, что здесь требуется шифрование или дешифрование каждому пакету. Поскольку все больше частных данных хранится в облаке и передается через Интернет, вопросы безопасности приобретают еще большее значение. IPsec гарантирует, что все данные полезной нагрузки будут зашифрованы. В итоге использование IPsec предотвратит перехват конфиденциальной информации.
Однако, в отличие от базового процессора LS2088A, новый продукт был намеренно не оптимизирован для сложной пересылки и табличного поиска вверх до пяти. Это связано с тем, что во многих приложениях кэширование потоков может использоваться так, что только первый пакет в потоке должен проходить через таблицы поиска сложной пересылки. Если в среднем в течение всего потока мы имеем много пакетов, то поток можно кэшировать, чтобы не выполнять поиск по каждому пакету отдельно. Из-за пересмотра концепции этого приложения ускорение табличного поиска AIOP для данного продукта не требовалось, что позволило разработчикам LX2160A больше сосредоточиться на других ключевых моментах его использования.
В процессе создания LS2088A, решая проблему обработки широкого диапазона размеров пакетов, мы оптимизировали LX2160A именно для достижения максимальной скорости передачи данных IPsec с большими размерами пакетов. Новый процессор может выполнять переадресацию с IPv4 на IPsec со скоростью до 50 Гбит/с. Это в 2,5 раза превышает максимальную скорость передачи данных у LS2088A. При проектировании мы нацелились на этот показатель, потому что, хотя на некоторых рынках сетевой обработки (например, для LS2088A скорость была оптимизирована), возможно, это имело место с меньшими средними размерами пакетов, LX2160A был оптимизирован именно для размеров пакетов приложения инфраструктуры хранения данных и для беспроводной сети 5G. Улучшение архитектуры LX2160A под различные приложения и снижение скорости передачи пакетов позволило оптимизировать чип для высоких скоростей передачи данных, не перегружая его обработкой пакетов.
Однако с точки зрения Ethernet целевые показатели производительности были выше скорости 10 Гбит/с, поддерживаемой MAC-адресами LS2088A, — 25, 40, 50 и 100 Гбит/с Ethernet стали обычным делом, и нам нужно было поддерживать их. С этой целью два MAC-порта были оснащены поддержкой 40, 50 и 100 Гбит/с Ethernet. Эта максимальная скорость Ethernet была 10‑кратным увеличением по сравнению с 10 Гбит/с LS2088A благодаря добавлению необходимого потенциала для передачи данных на больших скоростях, что ранее было невозможно. В корпоративных приложениях часто требуется два порта с максимальной скоростью — для резервирования или для поддержки bump in the wire (Bump in the Wire также известен как Transparent Firewall. Является сервером кэширования, но исключает конфигурацию на стороне клиента. В прозрачном режиме работы файервол располагается внутри подсети — на сетевом шлюзе. Благодаря этому у него есть возможность фильтровать трафик между хостами подсети. В данном случае клиент также не знает о существовании файервола, который опосредует его запросы, поэтому на клиентских машинах не требуется прописывать настройки сервера. — прим. пер.) с одним портом Ethernet и другим выходом. Всего на LX2160A представлено 16 MAC-адресов. При этом можно использовать такие варианты, как 16 1G Ethernet для подключения к широкому диапазону устройств в системе с коммутацией L2, поддерживаемой на аппаратных средствах процессора, или же до шести 25 Гбит/с Ethernet для других приложений, в том числе для дата-центров, где часто развертывается именно 25 Гбит/с Ethernet. Итоговый вариант решения чипа LX2160A приведен на рис. 3.
Заключение
К созданию процессора LX2160A привели вдумчивый анализ и должная оценка требований клиентов. По сравнению с базовым процессором LS2088A он имеет удвоенное количество ядер, в восемь раз больше кэша платформы, в 1,5 раза большую пропускную способность DRAM, в три раза превышает пропускную способность PCIe и в 10 раз максимальную скорость Ethernet. Комбинированный набор функций не отражает простой подход «всего и побольше». Вместо этого мы тщательно проанализировали текущие и будущие варианты использования нового процессора и надеемся, что создали достойную SoC для дальнейшей эффективной реализации. Узнать больше о процессоре LX2160A можно на сайте компании [1].xosotin chelseathông tin chuyển nhượngcâu lạc bộ bóng đá arsenalbóng đá atalantabundesligacầu thủ haalandUEFAevertonxosofutebol ao vivofutemaxmulticanaisonbetbóng đá world cupbóng đá inter milantin juventusbenzemala ligaclb leicester cityMUman citymessi lionelsalahnapolineymarpsgronaldoserie atottenhamvalenciaAS ROMALeverkusenac milanmbappenapolinewcastleaston villaliverpoolfa cupreal madridpremier leagueAjaxbao bong da247EPLbarcelonabournemouthaff cupasean footballbên lề sân cỏbáo bóng đá mớibóng đá cúp thế giớitin bóng đá ViệtUEFAbáo bóng đá việt namHuyền thoại bóng đágiải ngoại hạng anhSeagametap chi bong da the gioitin bong da lutrận đấu hôm nayviệt nam bóng đátin nong bong daBóng đá nữthể thao 7m24h bóng đábóng đá hôm naythe thao ngoai hang anhtin nhanh bóng đáphòng thay đồ bóng đábóng đá phủikèo nhà cái onbetbóng đá lu 2thông tin phòng thay đồthe thao vuaapp đánh lô đềdudoanxosoxổ số giải đặc biệthôm nay xổ sốkèo đẹp hôm nayketquaxosokq xskqxsmnsoi cầu ba miềnsoi cau thong kesxkt hôm naythế giới xổ sốxổ số 24hxo.soxoso3mienxo so ba mienxoso dac bietxosodientoanxổ số dự đoánvé số chiều xổxoso ket quaxosokienthietxoso kq hôm nayxoso ktxổ số megaxổ số mới nhất hôm nayxoso truc tiepxoso ViệtSX3MIENxs dự đoánxs mien bac hom nayxs miên namxsmientrungxsmn thu 7con số may mắn hôm nayKQXS 3 miền Bắc Trung Nam Nhanhdự đoán xổ số 3 miềndò vé sốdu doan xo so hom nayket qua xo xoket qua xo so.vntrúng thưởng xo sokq xoso trực tiếpket qua xskqxs 247số miền nams0x0 mienbacxosobamien hôm naysố đẹp hôm naysố đẹp trực tuyếnnuôi số đẹpxo so hom quaxoso ketquaxstruc tiep hom nayxổ số kiến thiết trực tiếpxổ số kq hôm nayso xo kq trực tuyenkết quả xổ số miền bắc trực tiếpxo so miền namxổ số miền nam trực tiếptrực tiếp xổ số hôm nayket wa xsKQ XOSOxoso onlinexo so truc tiep hom nayxsttso mien bac trong ngàyKQXS3Msố so mien bacdu doan xo so onlinedu doan cau loxổ số kenokqxs vnKQXOSOKQXS hôm naytrực tiếp kết quả xổ số ba miềncap lo dep nhat hom naysoi cầu chuẩn hôm nayso ket qua xo soXem kết quả xổ số nhanh nhấtSX3MIENXSMB chủ nhậtKQXSMNkết quả mở giải trực tuyếnGiờ vàng chốt số OnlineĐánh Đề Con Gìdò số miền namdò vé số hôm nayso mo so debach thủ lô đẹp nhất hôm naycầu đề hôm naykết quả xổ số kiến thiết toàn quốccau dep 88xsmb rong bach kimket qua xs 2023dự đoán xổ số hàng ngàyBạch thủ đề miền BắcSoi Cầu MB thần tàisoi cau vip 247soi cầu tốtsoi cầu miễn phísoi cau mb vipxsmb hom nayxs vietlottxsmn hôm naycầu lô đẹpthống kê lô kép xổ số miền Bắcquay thử xsmnxổ số thần tàiQuay thử XSMTxổ số chiều nayxo so mien nam hom nayweb đánh lô đề trực tuyến uy tínKQXS hôm nayxsmb ngày hôm nayXSMT chủ nhậtxổ số Power 6/55KQXS A trúng roycao thủ chốt sốbảng xổ số đặc biệtsoi cầu 247 vipsoi cầu wap 666Soi cầu miễn phí 888 VIPSoi Cau Chuan MBđộc thủ desố miền bắcthần tài cho sốKết quả xổ số thần tàiXem trực tiếp xổ sốXIN SỐ THẦN TÀI THỔ ĐỊACầu lô số đẹplô đẹp vip 24hsoi cầu miễn phí 888xổ số kiến thiết chiều nayXSMN thứ 7 hàng tuầnKết quả Xổ số Hồ Chí Minhnhà cái xổ số Việt NamXổ Số Đại PhátXổ số mới nhất Hôm Nayso xo mb hom nayxxmb88quay thu mbXo so Minh ChinhXS Minh Ngọc trực tiếp hôm nayXSMN 88XSTDxs than taixổ số UY TIN NHẤTxs vietlott 88SOI CẦU SIÊU CHUẨNSoiCauVietlô đẹp hôm nay vipket qua so xo hom naykqxsmb 30 ngàydự đoán xổ số 3 miềnSoi cầu 3 càng chuẩn xácbạch thủ lônuoi lo chuanbắt lô chuẩn theo ngàykq xo-solô 3 càngnuôi lô đề siêu vipcầu Lô Xiên XSMBđề về bao nhiêuSoi cầu x3xổ số kiến thiết ngày hôm nayquay thử xsmttruc tiep kết quả sxmntrực tiếp miền bắckết quả xổ số chấm vnbảng xs đặc biệt năm 2023soi cau xsmbxổ số hà nội hôm naysxmtxsmt hôm nayxs truc tiep mbketqua xo so onlinekqxs onlinexo số hôm nayXS3MTin xs hôm nayxsmn thu2XSMN hom nayxổ số miền bắc trực tiếp hôm naySO XOxsmbsxmn hôm nay188betlink188 xo sosoi cầu vip 88lô tô việtsoi lô việtXS247xs ba miềnchốt lô đẹp nhất hôm naychốt số xsmbCHƠI LÔ TÔsoi cau mn hom naychốt lô chuẩndu doan sxmtdự đoán xổ số onlinerồng bạch kim chốt 3 càng miễn phí hôm naythống kê lô gan miền bắcdàn đề lôCầu Kèo Đặc Biệtchốt cầu may mắnkết quả xổ số miền bắc hômSoi cầu vàng 777thẻ bài onlinedu doan mn 888soi cầu miền nam vipsoi cầu mt vipdàn de hôm nay7 cao thủ chốt sốsoi cau mien phi 7777 cao thủ chốt số nức tiếng3 càng miền bắcrồng bạch kim 777dàn de bất bạion newsddxsmn188betw88w88789bettf88sin88suvipsunwintf88five8812betsv88vn88Top 10 nhà cái uy tínsky88iwinlucky88nhacaisin88oxbetm88vn88w88789betiwinf8betrio66rio66lucky88oxbetvn88188bet789betMay-88five88one88sin88bk88xbetoxbetMU88188BETSV88RIO66ONBET88188betM88M88SV88Jun-68Jun-88one88iwinv9betw388OXBETw388w388onbetonbetonbetonbet88onbet88onbet88onbet88onbetonbetonbetonbetqh88mu88Nhà cái uy tínpog79vp777vp777vipbetvipbetuk88uk88typhu88typhu88tk88tk88sm66sm66me88me888live8live8livesm66me88win798livesm66me88win79pog79pog79vp777vp777uk88uk88tk88tk88luck8luck8kingbet86kingbet86k188k188hr99hr99123b8xbetvnvipbetsv66zbettaisunwin-vntyphu88vn138vwinvwinvi68ee881xbetrio66zbetvn138i9betvipfi88clubcf68onbet88ee88typhu88onbetonbetkhuyenmai12bet-moblie12betmoblietaimienphi247vi68clupcf68clupvipbeti9betqh88onb123onbefsoi cầunổ hũbắn cáđá gàđá gàgame bàicasinosoi cầuxóc đĩagame bàigiải mã giấc mơbầu cuaslot gamecasinonổ hủdàn đềBắn cácasinodàn đềnổ hũtài xỉuslot gamecasinobắn cáđá gàgame bàithể thaogame bàisoi cầukqsssoi cầucờ tướngbắn cágame bàixóc đĩaAG百家乐AG百家乐AG真人AG真人爱游戏华体会华体会im体育kok体育开云体育开云体育开云体育乐鱼体育乐鱼体育欧宝体育ob体育亚博体育亚博体育亚博体育亚博体育亚博体育亚博体育开云体育开云体育棋牌棋牌沙巴体育买球平台新葡京娱乐开云体育mu88qh88
Литература
- nxp.com/products/processors-and-microcontrollers/arm-based-processors-and-mcus/qoriq-layerscape-arm-processors/the-lx2160a-multicore-communications-processor:LX2160A?&&tid=vanLX2160A