- •Архитектура эвм
- •Введение
- •Структура мпс
- •Основные понятия в архитектуре мпс
- •Архитектура фон Неймана
- •Гарвардская архитектура
- •Параллельная архитектура
- •Конвейерная архитектура
- •Суперскалярная архитектура
- •АрхитектурыCisc
- •Архитектуры risc
- •Архитектуры misc
- •Ассемблеры
- •Программа Ассемблер
- •Язык Ассемблер
- •Основы 32-битного программирования в Windows
- •Api функции
- •Сообщения Windows
- •Версии ассемблеров
- •Среды разработки
- •Представление данных в эвм
- •Системы счисления и преобразования между ними
- •Форматы представления чисел
- •Форматы представления двоичных чисел
- •Формат с плавающей точкой
- •Типы адресаций операндов
- •Интерфейсы
- •Последовательный интерфейс rs-232c
- •Интерфейс параллельного порта
- •Инфракрасный интерфейс
- •Интерфейс Bluetooth
- •Интерфейс usb
- •Интерфейс ieee 1394 - FireWire
- •Сопроцессоры
- •Система прерываний и исключений
- •Интерфейс jtag
- •Символы и строки
- •Архитектура cisc от Intel
- •Введение
- •Микроархитектура Intel
- •Микроархитектура р6
- •Микроархитектура NetBurst
- •Микроархитектура Pentium 4
- •Микроархитектура Intel Pentium Mobile
- •Микроархитектура Intel Core
- •Микроархитектура Intel Core Duo
- •Микроархитектура Intel Nehalem
- •Адресация памяти в ia_32
- •Наборырегистров
- •Целочисленныйпроцессор
- •Регистры общего назначения (рон)
- •Регистры флагов eflags
- •Регистр указателя команд
- •Сегментные регистры
- •Управляющие регистры
- •Системные адресные регистры
- •Прямой и обратный порядок следования байтов
- •Виды адресации операндов в памяти
- •Цикл выполнения команды
- •Распределение адресного простраства
- •Образ программы в памяти.
- •Математический сопроцессор
- •Xmm технология
- •Система команд
- •Формат команды
- •Классификация команд
- •Целочисленный процессор
- •Команды общего назначения
- •Команды ввода-вывода
- •Инструкции работы со стеком
- •Арифметико-логические инструкции
- •Цепочечные операции
- •Команды управления
- •Команды поддержки языков высокого уровня
- •Команды прерываний
- •Команды синхронизации процессора
- •Команды обработки цепочки бит
- •Команды управления защитой
- •Команды обмена с управляющими регистрами
- •Команды идентификации и управления архитектурой
- •Управление кэшированием
- •Команды управления кэшированием
- •Сопроцессор с плавающей точкой
- •Классификация команд
- •Команды управления сопроцессором
- •Команды передачи данных
- •Команды сравнения данных
- •Арифметические команды
- •Трансцендентные функции
- •Целочисленное mmx расширение
- •Синтаксис ммх-команд
- •Классификация команд
- •Инициализация
- •Передача данных
- •Упаковка данных
- •Распаковка данных
- •Арифметика
- •Сравнения
- •Дополнительные команды
- •XmMрасширение с плавающей точкой
- •Типы данных
- •Передача данных
- •Арифметика
- •Сравнения
- •Преобразования
- •Управление состоянием
- •Распаковка данных
- •Управление кэшированием
- •Дополнительные команды
- •Цикл трансляции, компоновки и выполнения
- •Ассемблер cisc
- •Введение
- •Средства программирования и отладки
- •Описание masm
- •Структура программы на ассемблере
- •Типы данных
- •Макросредства
- •Директивы
- •Архитектура risc
- •Система команд
- •Архитектура misc
- •Архитектура vliw
- •Архитектура вычислительных систем со сверхдлинными командами
- •Архитектура ia-64
- •Многоядерные архитектуры
- •Микроконтроллер avr от Atmel
- •Архитектура avr от Atmel
- •Ассемблер
- •Команды ассемблера
- •Директивы ассемблера
- •Выражения
- •Микроконтроллеры c28x
- •Архитектура c28x
- •Архитектура f28x
- •Инструментальные средства разработки по
- •Ассемблер
- •Команды ассемблера
- •Формат объектного файла
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Архиватор
- •Абсолютный листер
- •Листер перекрестных ссылок
- •Утилита 16-ричного преобразования
- •Архитектура VelociTi
- •Структура и состав цсп с6x
- •Средства разработки цсп с6x
- •Ассемблер цсп с6x
- •Команды ассемблера
- •Выражения
- •Листинги
- •Листинги программ
- •Директивы ассемблера
- •Макроязык и макрокоманды
- •Компоновщик
- •Утилиты
- •Поддержка в matlab
- •Введение
- •Встроенные платы для цсп ‘c6x
Многоядерные архитектуры
Существуют одно- и многоядерные процессоры с параллельным выполнением некоторых операций, встречаются также системы, в которых несколько процессоров работают над одной задачей параллельно. Рассмотрим сначала одноядерный процессор.
«Процессорное ядро» (как правило, для краткости его называют просто «ядро») — это конкретное воплощение (микро)архитектуры (т.е. архитектуры в «аппаратном» смысле), являющееся стандартом для целой серии процессоров. Например, K10 — это микроархитектура, которая лежит в основе многих сегодняшних процессоров AMD: Athlon II, Phenom, Phenom II, Opteron. Микроархитектура задаёт общие принципы: «средний» по длине конвейер, исполнение до трёх команд за такт, предсказание переходов и внеочередное исполнение, и прочие «глобальные» особенности. Ядро — более конкретное воплощение. Например, процессоры микроархитектуры К10 с двумя ядрами, без поддержки многопроцессорности и кэша L3, с шиной HyperTransport частотой в 2 ГГц — это более-менее полное описание ядра Regor для Athlon II.
Можно сказать что «ядро» — это конкретное воплощение определённой микроархитектуры «в кремнии», обладающее (в отличие от самой микроархитектуры) набором строго обусловленных характеристик. Микроархитектура — аморфна, она описывает общие принципыпостроения процессора. Ядро — микроархитектура, «обросшая» всевозможными параметрами и характеристиками. Чрезвычайно редки случаи, когда процессоры сменяли микроархитектуру, сохраняя название. И, наоборот, практически любое наименование процессора хотя бы несколько раз за время своего существования «меняло» ядро. Например, общее название серии процессоров AMD — «Athlon 64» — это одна микроархитектура (K8), но целых 13 ядер — от Sledgehammer (2003) до Huron (2009). Разные ядра, построенные на одной микроархитектуре, могут иметь в том числе разное быстродействие.
За последнее десятилетие удельная производительность процессоров в пересчете на число транзисторов упала на один-два порядка. Дальнейшее развитие полупроводниковых технологий не может компенсировать неэффективность современных процессоров. Показатели быстродействия процессоров (в частности, тактовые частоты) достигли практически граничных показателей, плотность энергии увеличивается пропорционально уменьшению размеров транзисторов, и, соответственно, увеличиваются проблемы с теплоотводом.
Если нельзя использовать все возможности на одном ядре из-за исключительной сложности такого ядра, то следует пойти по пути увеличения числа ядер. Именно так поступили в Sun Microsystems, выпустив 8-ядерный процессор. Niagara. Сторонники EPIC-подхода также склонились к многоядерному решению. На форуме IDF осенью 2004 года Пол Отеллини, генеральный директор Intel, заявил: Мы связываем наше будущее с многоядерными продуктами; мы верим, что это ключевая точка перегиба для всей индустрии.
Можно говорить о двух заметно разнящихся между собой тенденциях в процессе увеличения числа ядер.
Мультиядерность (multi-core). В этом случае предполагается, что ядра являются высокопроизводительными и их относительно немного; сейчас их число — два-четыре. Основных недостатков этого подхода два: первый — высокое энергопотребление, второй — высокая сложность чипа и, как следствие, низкий процент выхода готовой продукции. При производстве 8-ядерного процессора IBM Сell только 20% производимых кристаллов являются годными.
Другой путь — многоядерность (many-core). В таком случае на кристалле собирается на порядок большее число ядер, но имеющих более простую структуру и потребляющих миливатты мощности. Сейчас количество ядер варьируется от 40 до 200, можно ожидать появления процессоров с тысячами и десятками тысяч ядер.
Многоядерные процессоры, если все сводится к размещению большего числа простых ядер на одной подложке, нельзя воспринимать как решение всех проблем. Многоядерные процессоры чрезвычайно сложно программировать, они могут быть эффективны только на приложениях, обладающих естественной многопоточностью.
IBM предлагает архитектуру Power7, которая приходит на смену Power6, предназначавшейся для Unix-серверов корпорации. Архитектура Power7 является для IBM заметным шагом вперед. От 2 ядерных моделей корпорация переходит к 4, 6 и 8 ядрам, и каждое из них способно выполнять четыре потока команд одновременно. Процессоры Power7 должны выйти в 2010. Они будут изготавливаться по 45-нанометровому технологическому процессу и, как утверждают в IBM, их можно будет устанавливать в нынешних серверах моделей Power 570 и Power 595.
Fujitsu представляет 8 ядерный процессор SPARC64 — новую версию 4-ядерного процессора SPARC64 VII. Процессоры SPARC64 используются в серверах Fujitsu и Sun Microsystems.
AMD применяет в блейд-серверах процессоры Magny-Cours. Это 12-ядерные процессоры, которые объединяют на одной микросхеме два 6 ядерных процессора, соединенных шиной AMD Hyper Transport. Название им взяли у известной гоночной трассы во Франции. Выход Magny-Cours запланирован на 2010.
Intel работает над 8 ядерными двухпоточными процессорами Nehalem-EX, выход которых назначен на 2010. Ожидается появление Tukwila — 4-ядерной версии процессора Itanium.
Но вопрос в том, в какой степени современное программное обеспечение — и, следовательно, конечные пользователи — способно использовать возможности многоядерных процессоров. Приложения должны быть написаны так, чтобы решаемые ими задачи можно было разбивать на подзадачи, выполняемые на нескольких ядрах параллельно.