Компьютер для операций с математическими функциями
Компьютер для операций с математическими функциями — компьютер для оперирования с функциями на аппаратном уровне (без программирования этих операций).[1][2][3]
История[править]
Вычислительная машина для операций с функциями была предложена и разработана Карцевым в 1967 году[1]. В число операций этой вычислительной машины входили сложение, вычитание и умножение функций, сравнение функций, аналогичные операции над функцией и числом, отыскание максимума функций, вычисление неопределенного интеграла, вычисление определенного интеграла от производной двух функций, сдвиг функции по абсциссе и т. д. По архитектуре эта вычислительная машина являлась (пользуясь современной терминологией) векторным процессором. В ней использовался тот факт, что многие из этих операций могут быть истолкованы как известные операции над векторами: сложение и вычитание функций — как сложение и вычитание векторов, вычисление определенного интеграла от производной двух функций — как вычисление скалярного произведения двух векторов, сдвиг функций по абсциссе — как поворот вектора относительно осей координат и т. д.[1] В 1966 году Хмельник предложил метод кодирования функций[2] , то есть представления функции единым (для функции в целом) позиционным кодом. При этом указанные операции с функциями выполняются как уникальные машинные операции с такими кодами на единственном арифметическом устройстве[3]
Позиционные коды функций одного аргумента[2][3][править]
- См. также: Позиционное кодирование (значения)
Основная идея[править]
Позиционный код целого числа представляет собой запись цифр этого числа в некоторой позиционной системе счисления, имеющую вид
Такой код можно назвать линейным. В отличие от него позиционный код функции одного аргумента имеет вид
то есть является плоским и треугольным, поскольку цифры в нем образуют треугольник.
Указанному позиционному коду целого числа соответствует сумма вида
- ,.
где — основание данной системы счисления. Указанному позиционному коду функции одного аргумента соответствует двойная сумма вида
- ,
где — целое положительное число, количество значений цифры , — определенная функция аргумента .
Сложение позиционных кодов чисел связано с передачей переноса в старший разряд по схеме
- .
Сложение позиционных кодов функций одного аргумента также связано с передачей переноса по схеме
- .
При этом один и тот же перенос передается одновременно в два старших разряда.
R-е треугольные коды[править]
Треугольный код называется R-м (и обозначается как ), если числа принимают значения из множества
- где и .
Например, треугольный код является троичным , если , и — четверичным , если .
Для R-х треугольных кодов справедливы следующие равенства:
- ,
где a — любое число. Существует любого целого действительного числа. В частности, . Также существует любой функции вида . В частности, .
Одноразрядное сложение[править]
в R-х треугольных кодах состоит в том, что
- в данном -разряде определяется сумма слагаемых разрядов и двух переносов , поступивших в данный разряд слева, то есть
- ,
- эта сумма представляется в виде , где ,
- записывается в -разряд суммарного кода, а перенос из данного разряда передается в -разряд и -разряд.
Эта процедура описывается (как и при одноразрядном сложении чисел) таблицей одноразрядного сложения, где должны присутствовать все значения слагаемых и и все значения переносов, возникающих при разложении суммы . Такая таблица может быть синтезирована при
Ниже приведена таблица одноразрядного сложения при :
| Smk | TK(Smk) | |||
|---|---|---|---|---|
| . | . | 0 | . | . |
| 0 | 0 | 0 | 0 | 0 |
| . | . | 0 | . | . |
| 1 | 1 | 0 | 1 | 0 |
| . | . | 0 | . | . |
| (-1) | (-1) | 0 | (-1) | 0 |
| . | . | 1 | . | . |
| 2 | (-1) | 1 | (-1) | 1 |
| . | . | 1 | . | . |
| 3 | 0 | 1 | 0 | 1 |
| . | . | 1 | . | . |
| 4 | 1 | 1 | 1 | 1 |
| . | . | (-1) | . | . |
| (-2) | 1 | (-1) | 1 | (-1) |
| . | . | (-1) | . | . |
| (-3) | 0 | (-1) | 0 | (-1) |
| . | . | (-1) | . | . |
| (-4) | (-1) | (-1) | (-1) | (-1) |
Одноразрядное вычитание[править]
в R-х треугольных кодах отличается от одноразрядного сложения только тем, что в данном -разряде величина определяется по формуле
- .
Одноразрядное деление на параметр R[править]
в R-х треугольных кодах основано на использовании соотношения
- ,
откуда следует, что деление каждого разряда вызывает переносы в два нижних разряда. Следовательно, разрядный результат в этой операции является суммой частного от деления данного разряда на R и переносов из двух верхних разрядов. Таким образом, при делении на параметр R
- в данном -разряде определяется сумма
- ,
- эта сумма представляется в виде , где ,
- записывается в -разряд результирующего кода, а перенос из данного разряда передается в -разряд и -разряд.
Эта процедура описывается таблицей одноразрядного деления на параметр R, где должны присутствовать все значения слагаемых и все значения переносов, возникающих при разложении суммы . Такая таблица может быть синтезирована при
Ниже приведена таблица одноразрядного деления на параметр R при :
| Smk | TK(Smk) | |||
|---|---|---|---|---|
| . | . | 0 | . | . |
| 0 | 0 | 0 | 0 | 0 |
| . | . | 1 | . | . |
| 1 | 0 | 0 | 1 | 0 |
| . | . | (-1) | . | . |
| (-1) | 0 | 0 | (-1) | 0 |
| . | . | 0 | . | . |
| 1/3 | 1 | (-1/3) | 0 | 1 |
| . | . | 1 | . | . |
| 2/3 | (-1) | 1/3 | 1 | (-1) |
| . | . | 1 | . | . |
| 4/3 | 1 | (-1/3) | 1 | 1 |
| . | . | 2 | . | . |
| 5/3 | (-1) | 1/3 | 2 | (-1) |
| . | . | 0 | . | . |
| (-1/3) | (-1) | 1/3 | 0 | (-1) |
| . | . | (-1) | . | . |
| (-2/3) | 1 | (-1/3) | (-1) | 1 |
| . | . | (-1) | . | . |
| (-4/3) | (-1) | 1/3 | (-1) | (-1) |
| . | . | (-2) | . | . |
| (-5/3) | 1 | (-1/3) | (-2) | 1 |
Сложение и вычитание[править]
R-х треугольных кодов состоит (как и в позиционных кодах чисел) в последовательно выполняемых одноразрядных операциях. При этом одноразрядные операции во всех разрядах каждого столбца выполняются одновременно.
Умножение[править]
R-х треугольных кодов. Умножение некоторого кода на -разряд другого кода заключается в -сдвиге кода , то есть сдвиге его на k столбцов влево и на m строк вверх. Умножение кодов и заключается в последовательных -сдвигах кода и сложениях сдвинутого кода с частичным произведением (как и в позиционных кодах чисел).
Дифференцирование[править]
R-х треугольных кодов. Производная функции , определенной выше,
- .
Поэтому дифференцирование треугольных кодов функции заключается в определении треугольного кода частной производной и умножении его на известный треугольный код производной . Определение треугольного кода частной производной основано на соотношении
- .
Способ дифференцирования заключается в организации переносов из mk-разряда в (m+1,k)-разряд и в (m-1,k)-разряд, а их суммирование в данном разряде производится аналогично одноразрядному сложению.
Кодирование и декодирование[править]
R-х треугольных кодов. Функция, представленная рядом вида
- ,
с целыми коэффициентами , может быть представлена R-м треугольным кодом, так как эти коэффициенты и функции имеют R-е треугольные коды (о чем сказано в начале раздела). С другой стороны, R-й треугольный код может быть представлен указанным рядом, так как любое слагаемое в позиционном разложении функции (соответствующем этому коду) может быть представлено таким же рядом.
Укорочение[править]
R-х треугольных кодов. Так называется операция уменьшения числа ненулевых столбцов. Необходимость укорочения возникает при возникновении переносов за разрядную сетку. Укорочение заключается в делении на параметр R. При этом все коэффициенты представимого кодом ряда уменьшаются в R раз, а дробные части этих коэффициентов отбрасываются. Исчезает также старший член ряда. Такое сокращение допустимо, если известно, что ряды функций являются сходящимися. Укорочение состоит в последовательно выполняемых одноразрядных операциях деления на параметр R. При этом одноразрядные операции во всех разрядах каждой строки выполняются одновременно, а переносы из младшей строки отбрасываются.
Масштабный коэффициент[править]
R-й треугольный код сопровождается масштабным коэффициентом M, аналогичным порядку в числе с плавающей точкой. Коэффициент M позволяет представить все коэффициенты кодируемого ряда в виде целых чисел. Коэффициент M умножается на R при укорочении кода. При сложении коэффициенты M выравниваются, для чего необходимо укорачивать один из слагаемых кодов. При умножении коэффициенты M также умножаются.
Позиционные коды функций многих аргументов[4][править]
Позиционный код функции двух аргументов изображен на рис. 1. Ему соответствует тройная сумма вида
- ,
где — целое положительное число, количество значений цифры , а — определенные функции аргументов соответственно. На рис. 1 узлы соответствуют цифрам , а в кружках показаны значения индексов соответствующей цифры. Позиционный код функции двух аргументов называется пирамидальным. Позиционный код называется R-м (и обозначается как ), если числа принимают значения из множества . При сложении кодов перенос распространяется в четыре разряда и поэтому .
Позиционному коду функции нескольких аргументов соответствует сумма вида
- Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle F(x_1,\ldots, x_i, \ldots, x_a ) = \sum_{k=0}^{n} \sum_{m_1=0}^{k} \ldots \sum_{m_a=0}^{k} (\alpha_{m_1, \ldots, m_a,k} R^k \prod^a_{i=1}(y_i^{k-m_i}(1-y_i)^{m_i}))} ,
где Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle R} — целое положительное число, количество значений цифры Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \alpha_{m_1, \ldots, m_a,k}} , а Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle y_i(x_i)} — определенные функции аргументов Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle x_i} . Позиционный код функции нескольких аргументов называется гиперпирамидальным. На рис. 2 показан для примера позиционный гиперпирамидальный код функции трех аргументов. В нем узлы соответствуют цифрам Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \alpha_{m1,m2,m3,k}} , а в кружках показаны значения индексов Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle {m1,m2,m3,k}} соответствующей цифры. Позиционный гиперпирамидальный код называется R-м (и обозначается как Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle GPK_R} ), если числа Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle \alpha_{m_1, \ldots, m_a,k}} принимают значения из множества Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle D_R} . При сложении кодов Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle GPK_R} перенос распространяется в a-мерный куб, содержащий Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle 2^a} разрядов и поэтому Невозможно разобрать выражение (SVG с запасным PNG (MathML можно включить с помощью плагина для браузера): Недопустимый ответ («Math extension cannot connect to Restbase.») от сервера «https://wikimedia.org/api/rest_v1/»:): {\displaystyle R \geq (2^{a-1}-1)} .
Примечания[править]
- ↑ 1,0 1,1 1,2 Малиновский Б. Н. История вычислительной техники в лицах. — Киев, Фирма "КИТ", ПТОО "АСК". — 1995. — ISBN 5-7707-6131-8.
- ↑ 2,0 2,1 2,2 Хмельник С. И. Кодирование функций // Кибернетика, АН УССР. — 1966. — том 4.
- ↑ 3,0 3,1 3,2 Хмельник С. И. Компьютерная арифметика функций. Алгоритмы и аппаратура. — Mathematics in Computers. — Россия-Израиль, 2004. — ISBN 978-0-557-07520-1.
- ↑ Хмельник С. И. Несколько типов позиционных кодов функций // Кибернетика, АН УССР. — 1970. — том 5.
Технологии цифровых процессоров ↑ | |
|---|---|
| Архитектура |
CISC · EDGE · EPIC · MISC · NISC · URISC · RISC · VLIW · ZISC · Фон Неймана · Гарвардская |
| Параллелизм |
|
| Реализации |
DSP · GPU · SoC · PPU · Векторный процессор · Математический сопроцессор • Микропроцессор · Микроконтроллер |
| Компоненты |
Barrel shifter · FPU · BSB · MMU · TLB · Регистровый файл · Управляющий автомат · АЛУ • Демультиплексор · Мультиплексор · Микрокод · Тактовая частота • Корпус • Регистры • Кэш (Кэш процессора) |
| Управление питанием |
APM · ACPI · Clock gating · Троттлинг • Динамическое изменение напряжения |