nedoPC.org

Electronics hobbyists community established in 2002
Atom Feed | View unanswered posts | View active topics It is currently 25 Apr 2024 01:22



Reply to topic  [ 9 posts ] 
Вычисления с произвольной точностью 
Author Message
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Время от времени я мысленно возвращаюсь к идее реализации троичного процессора для выполнения вычислений с произвольной точностью, которая была высказана мной в четвёртом выпуске издания NedoPC. Напомню свою основную мысль.

Программно или аппаратно реализуется простейший микропроцессор содержащий определённый объём оперативной памяти разделённой на несколько частей. Первая из них - операционная, предназначена для хранения промежуточных результатов вычислений. Вторая - описательная - хранит ссылки-описатели значений. Каждый описатель имеет фиксированный размер и в свою очередь состоит из двух частей и записывается следующим образом: [P:L], где P - указатель, или, другими словами, порядковый номер троичного разряда отсчитываемый от начала третьей части оперативной памяти - собственно хранилища данных; L - количество разрядов в числе. Таким образом вычисления с числами сводятся к извлечению из описательной части ссылок-описателей с последующим выполнением арифметических операций над данными, на которые ссылается описатель. Четвёртая часть памяти предназначена для хранения выполняемых процессором команд.

В распоряжение программиста предоставляется набор регистров:

указатель текущей команды - PC,
указатель стека - SP,
три регистра-указателя - X, Y и Z,
регистр состояния процессора - CF,
набор вспомогательных регистров - Rx.

Где регистры-указатели X, Y и Z имеют ту же разрядность, что и ссылки-описатели чисел. Регистры X и Y предназначены для хранения указателей на описатели операндов выполняемой арифметической операции, после выполнения операции в регистр Z будет помещён описатель результата. Вспомогательные регистры могут быть использованы для выполнения команд, напрямую не относящихся к выполнению вычислений.

Далее приводится примерный перечень групп команд, которые выполняет процессор:

1.Пересылка данных
- Чтение из памяти в регистр
- Запись из регистра в память
- Пересылка из регистра в регистр

2.Арифметика
- Сложение
- Вычитание
- Умножение
- Деление
- Сравнение чисел
- Определение знака числа
- Определение чётности числа
- Выделение целой части числа
- Выделение дробной части числа
- Смена знака числа
- Округление числа

3.Логика
- Max
- Min
- Mean
- Shift up
- Shift down

4.Управление выполнением программы
- Условный переход
- Безусловный переход
- Условный вызов подпрограммы
- Безусловный вывоз подпрограммы
- Возврат из подпрограммы

5.Управление процессором
- Останов
- Выдача значения регистра
- Управление режимами прерываний

Так же есть примерное описание синтаксиса языка программирования низкого уровня, который основан на идее программирования в содержательных обозначениях, т.е. использует общепринятые обозначения для большинства арифметических операций ;)


26 Oct 2008 01:21
Profile
Reply with quote
овчинка выделки не стоит
данный способ (построение поразрядных вычислителей) в настоящее время не применим - мы рассматривали возможность построения минимального процессора с подобной последовательной обработкой данных (хотя рассматривался двоичный способ кодирования но суть та же) и уперлись в то что для реализации подобного механизма нужна особая память. в настоящее время подобнго рода память слишком медленная. если же использовать обычную память то целесообразно извлекать данные большой разрядности а если так то на преобразованя к последоватльному виду и обратно идут слишком большие издержки

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


26 Oct 2008 03:55
Admin
User avatar

Joined: 08 Jan 2003 23:22
Posts: 22574
Location: Silicon Valley
Reply with quote
т.е. шина данных предполагается быть однотритной?
я думаю, что если сделать шину данных 3-тритной, то оно пошустрее работать будет ;)
при этом размер операндов и результатов останется произвольным, но кратным 3 - что не есть такое уж тяжёлое ограничение...


26 Oct 2008 10:32
Profile WWW
Reply with quote
Shaos wrote:
т.е. шина данных предполагается быть однотритной?
я думаю, что если сделать шину данных 3-тритной, то оно пошустрее работать будет ;)
при этом размер операндов и результатов останется произвольным, но кратным 3 - что не есть такое уж тяжёлое ограничение...


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


26 Oct 2008 12:43
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Quote:
т.е. шина данных предполагается быть однотритной?
я думаю, что если сделать шину данных 3-тритной, то оно пошустрее работать будет ;)


Ну это уже решать разработчику при конкретной реализации, я никаких ограничений не ставлю :)

Quote:
при этом размер операндов и результатов останется произвольным, но кратным 3 - что не есть такое уж тяжёлое ограничение...


Да, думаю это не страшно. Потери в 2-3 разряда на десяток, не критично.


26 Oct 2008 13:12
Profile
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Quote:
разрядность более 1 ставит жирный крест на многоядерности (точнее сильно ее ограничивает) так что применение такого чипа - это калькулятор или сверх-малопотребляющие решения вроде умных датчиков.


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

P.S. Забыл упомянуть о некоторых вопросах вроде процедур начального пуска и перезапуска, ввода и вывода данных, и способах определения типов операндов.


26 Oct 2008 13:20
Profile
Reply with quote
что касается калькулятора то теоретически самым удобным было бы использовать 3х-разрядный МК, НО

лучше спроектировать 1трайтный (по моему разумению 6 разрядов) это не столько для ускорения вычислений сколько для того чтобы сделать более универсальное процессорное ядро и отработать на нем определенные аппаратные решения более сложные нежени требуются в калькулаторе. потому что в калькулаторе используется в основном N-10я систем счисления и метод вычисления цифра за цифрой а там немного другая математика.

вообще сообществу не помешало бы заинтересовать математика (алгоритмиста) это было бы существенной помощью в решении многих задач.
потому что очевидно что для многих библиотечных функций востребованых в микроэлетроники алгоритмы ускоренных операций зависят от представления и нуждаются в корректировках стандартных алгоритмов.
я полагаю что большинство здесть присутствующих скорее электронщики и не думю что мы в состоянии серьезно заниматься алгоритмами.


26 Oct 2008 13:30
Retired

Joined: 03 Aug 2003 22:37
Posts: 1474
Location: Moscow
Reply with quote
Quote:
вообще сообществу не помешало бы заинтересовать математика (алгоритмиста) это было бы существенной помощью в решении многих задач.


Я пытался это сделать, но у математиков есть нехорошее свойство - тратить всё время на изучение одного из 95 аспектов, начисто игнорируя все остальные. Широкопрофильные усидчивые математики мне пока не попадались :)

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


Этот вопрос я поднимал на конференции.

Quote:
я полагаю что большинство здесть присутствующих скорее электронщики и не думю что мы в состоянии серьезно заниматься алгоритмами.


Я бы не стал так обобщать ;)


26 Oct 2008 15:03
Profile
Reply with quote
Quote:
Quote:
я полагаю что большинство здесть присутствующих скорее электронщики и не думю что мы в состоянии серьезно заниматься алгоритмами.


Я бы не стал так обобщать ;)


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


27 Oct 2008 11:01
Display posts from previous:  Sort by  
Reply to topic   [ 9 posts ] 

Who is online

Users browsing this forum: No registered users and 45 guests


You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot post attachments in this forum

Search for:
Jump to:  
Powered by phpBB® Forum Software © phpBB Group
Designed by ST Software.