Алгоритмы На Чипе (Анонс Книги)

Я начал работать над книгой.

Уже опубликовано: Глава 1 (начало): Вычислительная модель.

Глава 1 (продолжение): Работоспособность элементарных схем.

Нет, этот шаг не безумие, а моя попытка с ним бороться.

Попытка сконцентрироваться на чем-то разумном, заставить свой мозг снова задуматься, преодолеть моральную травму и начать как-то заглядывать в будущее.

Возможно, эта работа станет лекарством не только для меня.



О чем эта книга и для кого?

Я собираюсь рассказать об удивительном мире, где для решения любой алгоритмической задачи вы имеете право построить любой компьютер и запрограммировать его так, как захотите.

Больше никаких иностранных правил, иностранных архитектур и иностранных языков программирования — полная свобода воображения и изобретений.

Это мир, в котором вы сами решаете, какой чип реализовать на полупроводниковом чипе.

Чтобы помочь вам в этом, я попытался собрать базовый набор методов проектирования эффективных цифровых логических схем.

Основной акцент в рассказе сделан на математических и алгоритмических аспектах решаемых задач.

Это не «просто еще одно» руководство по проектированию электронных схем, а учебник по очень специфическому способу реализации алгоритмов.

Я надеюсь, что ее содержание заинтересует и увлечет широкий круг любителей математики и программирования, даже если они никогда раньше не сталкивались с проектированием микросхем.

При этом я старался подбирать материал так, чтобы типичный разработчик железа мог легко его понять и с пользой применить в своем ремесле.

Хотя внутри книги вы найдете множество алгоритмических схем, используемых на практике, ее не следует рассматривать как простой инженерный справочник.

Самое ценное, чему вы можете научиться, — это конкретный образ мышления и характерный набор приемов решения подобных задач.

Конкретные алгоритмы и диаграммы здесь служат в первую очередь для демонстрации этих методов.



График работы и приглашение к сотрудничеству

Хотя все содержание будущей книги у меня уже есть в голове, превратить ее в читаемый текст будет для меня непростой задачей.

Боюсь, я не справлюсь, если попытаюсь сделать все сразу.

Мне кажется более разумным публиковать в черновиках, скажем, каждую среду все, что успеваю сделать за неделю.

Не все, о чем я собираюсь написать, входит в мою компетенцию.

Относитесь ко мне как к математику, кое-что слышавшему о принципах работы микросхем.

Однако в течение некоторого времени моей работой была разработка довольно сложного в аппаратном отношении устройства.

Я не всегда в курсе общепринятой терминологии - поправьте меня, если вдруг ухо заболит. Мне кажется, я неплохо разбираюсь в алгоритмах и математике, поэтому могу удивить читателя чем-то новым, что придумал сам.

Напротив, моя способность искать информацию в последних научных статьях, мягко говоря, страдает. Если вас интересуют последние исследования по любой из обсуждаемых тем, поделитесь ссылками на литературу.

Чтобы вызвать интерес у специалистов, упомяну несколько, как мне кажется, коммерчески интересных результатов: \\ произвольный неблокирующий переключатель

Алгоритмы на чипе (анонс книги)



Алгоритмы на чипе (анонс книги)

-битные источники в

Алгоритмы на чипе (анонс книги)



Алгоритмы на чипе (анонс книги)

-бит истощается глубоко

Алгоритмы на чипе (анонс книги)

и объем

Алгоритмы на чипе (анонс книги)

\\конвейерная (часть данных за каждый такт) память с

Алгоритмы на чипе (анонс книги)



Алгоритмы на чипе (анонс книги)

-битные неблокирующие порты чтения/записи, собранные из

Алгоритмы на чипе (анонс книги)

банки однопортовой оперативной памяти, содержащие каждый

Алгоритмы на чипе (анонс книги)

размер слова

Алгоритмы на чипе (анонс книги)

бит который: вмещает

Алгоритмы на чипе (анонс книги)

размер слова

Алгоритмы на чипе (анонс книги)

бит (данные не дублируются), имеет задержку

Алгоритмы на чипе (анонс книги)

бьет использует не более

Алгоритмы на чипе (анонс книги)

регистры и элементарные логические блоки.

Ниже я предоставил рекомендуемое содержание.



Список и краткое содержание глав



Глава 1. Введение и основные принципы.

Уровень абстракции для вычислений на кристалле.

.

Дискретное время.

Дискретный двоичный сигнал.

Сигнальные проводники.

Регистрация абстракции.

.

элементарные логические блоки: «И», «ИЛИ», «НЕ», «0», «1», «+», прямой и обратный двоичные мультиплексоры.

Объединение простых блоков в логические схемы.

.

«+» и инверсный мультиплексор из логических элементов (НКФ и НДФ).

.

Дерево адресов.

.

Логические противоречия и требование ацикличности.

.

Объем и глубина.

Примеры реализации простейших алгоритмов.

.

Представление натуральных чисел.

.

Каскадный компаратор.

.

Каскадный счетчик.

.

Прямой и дополнительный код для представления целых чисел.

.

Каскадный сумматор.

Простейшие структуры данных.

.

Каскадный стек.

.

Самая простая очередь.

.

Однопортовая ОЗУ.

Некоторые замечания о физической аналогии работы логических схем: задержки в схемах и проблемы с таймингом.



Глава 2. Конвейерная обработка и параллелизм на примере арифметических алгоритмов

Конвейерная обработка как способ борьбы со слишком длительными задержками.

.

Конвейерный каскадный сумматор.

.

Конвейерное дерево адресов.

.

Абстрактная задача конвейеризации ациклической схемы.

Разделяй и властвуй.

.

Параллельный компаратор.

.

Параллельный счетчик.

.

Параллельный (префиксный) сумматор.

.

Подсчет количества каналов со значением X. Добавление группы номеров.

.

Древовидная схема подключения сумматоров.

.

Дополнение с неполным переносом.

.

Схема с неполным переносом для вычисления суммы конечного ряда.

.

Задача о вычислении всех частичных сумм конечного ряда.

Умножение двух маленьких чисел.

.

Умножение столбцов.

.

Ээкономичный алгоритм.

Примечание об алгоритме деления.



Глава 3. Задача параллельной сортировки.

Сортировка сетей

Введение в концепцию.

.

Параллельная реализация алгоритма пузырьковой сортировки.

.

Концепция сортировочной сети.

.

Закон нуля и единицы для сортировочных сетей.

Алгоритм слияния как элемент асимптотически быстрого метода сортировки на последовательной машине.

Сети мясников, решающие задачу слияния двух множеств: .

Слияние нечетно-четных сетей.

.

Сеть Битонического Слияния.

Сортировочная сеть битума.

Задача нахождения статистики k-го порядка.



Глава 4. Задача параллельной сортировки.

Быстрые несетевые алгоритмы

Инверсии произвольной перестановки.

.

Алгоритм реализации на последовательной машине.

.

Схема, допускающая несколько записей в .

Стек деревьев адресов и стек деревьев слияния.

.

Проблема квадратичного роста объёма схем.

Проблема сортировки дичатом.

.

Сведение задачи к задаче упорядоченного уплотнения (удаления пустых позиций).

.

Функция распределения пустых позиций.

.

Сдвиг масштаба.

.

Быстрая реализация алгоритма последовательного побитового сдвига.

«Экономичная схема инвертирования перестановок.

.

Поуровневое сжатие стека деревьев адресов.

.

Различные компромиссы объема и глубины.

Параллельная сортировка набора, помеченного плотной группой чисел.

.

Сведение задачи к многократному повторению дихотомической сортировки.

.

Изменение перестановки (упорядочение чисел от 1 до N).

…Ээкспоненциальный рост объема при неточной реализации общего случая.

.

Более разумное распределение ресурсов сменного масштаба.

Простая реализация.

.

Схема с опционально неполным прохождением смещенной шкалы.



Глава 5: Переключение цепей

Переключение с сохранением порядка.

.

Постоянное переключение с N на M> N. .

Циклическое переключение с N на N. .

Коммутация прямого и обратного упорядоченного уплотнения с N на N и с N на M> N. .

Коммутационное разделение N каналов на два произвольных сегмента.

Простейшие схемы — произвольное переключение с N на N. .

Дорогая неблокирующая схема с минимальной глубиной.

.

Дорогая неблокирующая схема с использованием деревьев адресов.

Аналогия между сортировкой и коммутацией.

.

Переключение с использованием схемы обращения перестановки.

.

Произвольная перестановка перестановок из N в N с использованием сети Мясника.

.

Переключение перестановок с использованием схемы поразрядной сортировки.

.

Проблема дублирования и пропуска в общем случае.

Произвольная блокировка переключения с N на N. .

Схема, использующая поуровневое сжатие стека деревьев обратных адресов.

.

Трудности при переделке в неблокирующую схему.

.

Компромиссы объема и глубины.

.

Блокировка переключения с N на M> N. Ээкономичная схема произвольного неблокирующего переключения с N на N. .

Сортировка потоков по номеру источника.

.

Схема, предназначенная для дублирования потоков.

.

Соединение недублированных стоков с источниками.



Глава 6. Стек, очередь

Маленькая стопка.

.

Быстрый однопортовый стек с использованием сдвиговых регистров.

.

Простая, энергоэффективная однопортовая реализация.

.

Реализация на базе оперативной памяти.

.

Борьба за скорость.

Буферизация головной части.

.

Доказательство правильной работы.

.

Многопортовая версия.

Маленькая очередь.

.

Простой вариант с использованием сдвиговых регистров (запись в конец стека, чтение из головы).

.

Простая, энергоэффективная реализация с одним портом и двумя точками доступа.

.

Реализация на базе оперативной памяти.

.

Борьба за скорость.

Буферизация точек доступа.

.

Доказательство правильной работы.

.

Многопортовая версия.

Массивы стеков и очередей?

Глава 7. Задача «Вставить, найти, удалить»

Реализация задачи «Вставить, Найти, Удалить» на серийной машине.

.

Алгоритм сбалансированного дерева.

.

Трудозатраты на свободное переключение узлов дерева.

Быстрый, но энергоемкий алгоритм для небольшой задачи ограниченного объема.

.

Описание интерфейса (абстракция мгновенной вставки, мгновенного удаления, мгновенного поиск с отложенными результатами) … Найдите не более P элементов по отдельности.

.

Отдельно удалить не более P элементов.

.

Отдельно вставляйте не более P элементов.

.

Реализация P-порта, сочетающая поиск, вставку и удаление.

Каскадная логарифмическая схема.

.

Идея алгоритма.

.

Однотактные и многотактные реализации.

.

Трудности конвейерной транспортировки.

.

Дублирование средних секций.

.

Специальное дублирование первого раздела.



Глава 8. Многопортовая оперативная память.

Многопортовое ОЗУ с использованием регистров.

.

Соглашения о правилах интерфейса.

.

Многопортовое дерево адресов.

.

Конфликт записи данных.

.

Конвейеризация Неблокируемая многопортовая ОЗУ с использованием небольших однопортовых блоков ОЗУ.

.

Трудности из-за невозможности одновременного доступа более чем к одной ячейке каждого блока ОЗУ.

.

Идея отложенного письма и чтения.

.

Алгоритм буферизации.

.

Алгоритм передачи данных из буфера в ячейки оперативной памяти блоков «Таяние льда».

.

Чтение "наперегонки".

.

Полная схема.



Глава 9. Программирование поведения сложной логической схемы.

Принцип программированного поведения.

Генерация команд в реальном времени.

.

Вычисления с условно предсказуемым переходом.

.

Необходимость экономии памяти, повторного использования последовательностей команд. .

Процедурный язык высокого уровня для генерации команд. .

Трансляция в программу реального времени (команда управления на каждый такт).

\RAM машина, генерирующая команды в реальном времени.

Централизованное и распределенное управление устройствами.

.

Соединение генераторов команд между собой.

.

Синхронизация задержек.



Глава 10. CPU-подобные устройства.

Память, регистры, функциональные блоки, кроссировка.

Ассемблер и оптимизация кода.

Пример дизайна.

.

Алгоритм расчета расстояния между всеми парами вершин графа.

.

Тот случай, когда график не помещается в память на чипе.

.

Анализ критических ресурсов.

.

Выделение кванта информации.

.

Функциональные блоки.

.

Организация памяти.

.

Зарегистрировать файл.

.

Программа высокого уровня.

.

Скрипты управляющих команд для каждого блока.

Надеюсь, что смогу опубликовать первые несколько абзацев в следующую среду.

Теги: #Производство и разработка электроники #математика #Алгоритмы

Вместе с данным постом часто просматривают: