The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Проект по производству открытого процессора, совместимого с Z80, opennews (??), 30-Апр-24, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


60. "Проект по производству открытого процессора, совместимого с ..."  –1 +/
Сообщение от Аноним (82), 30-Апр-24, 16:18 
Вас кажется услышали: https://skillbox.ru/media/code/troichnyy-protsessor-utopiya-.../
Ответить | Правка | К родителю #5 | Наверх | Cообщить модератору

142. "Проект по производству открытого процессора, совместимого с ..."  –2 +/
Сообщение от n00by (ok), 01-Май-24, 08:21 
"В основе памяти «Сетуни» лежали ферритовые кольца."

Кажется, что вот в этом вся суть.

Если кто понимает, почему транзисторы "двоичные" -- тому очевидно, почему из них всё получается двоичное. Остальным достаточно легко впарить всякие интересные идейки.

Ответить | Правка | Наверх | Cообщить модератору

147. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Аноним (82), 01-Май-24, 10:58 
> Если кто понимает, почему транзисторы "двоичные" -- тому очевидно, почему из них всё получается двоичное.

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

Ответить | Правка | Наверх | Cообщить модератору

169. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Аноним (167), 01-Май-24, 14:26 
> Кто пониает как устроены логические элементы, тому очевидно что двоичность транзисторов
> не является принципиальным ограничением.

Ну я понимаю как CMOS инвертор из N-FET и P-FET делается. Сможете что-то столь же простое в троичной логике? :)

Ответить | Правка | Наверх | Cообщить модератору

223. "Проект по производству открытого процессора, совместимого с ..."  –1 +/
Сообщение от n00by (ok), 02-Май-24, 10:48 
>> Если кто понимает, почему транзисторы "двоичные" -- тому очевидно, почему из них всё получается двоичное.
> Кто пониает как устроены логические элементы, тому очевидно что двоичность транзисторов
> не является принципиальным ограничением.

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

Ответить | Правка | К родителю #147 | Наверх | Cообщить модератору

160. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Май-24, 13:53 
> Если кто понимает, почему транзисторы "двоичные" -- тому очевидно

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

пс: что такое "полная позиционная система счисления" ? - это когда для представления числа используется вся "мощность символов".

Пример: эт когда после цифры 9 (в десятичной системе счисления) идет традиционно (по принципу счетчика) не представление десятого числа как 10, а как 00. И тогда правило лидирующих "незначимых нулей" - не работает, и как быть с числом 00 и 000, 006, 0007 - это же представление разных чисел? - читаем выше :)

Ответить | Правка | К родителю #142 | Наверх | Cообщить модератору

224. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от n00by (ok), 02-Май-24, 10:53 
>> Если кто понимает, почему транзисторы "двоичные" -- тому очевидно
> а когда поймете, что такое "полная позиционная система счисления", тогда удивитесь, что
> вам необходимо третье (нейтральное) состояние ячейки (одного бита) для "полной двоичной
> системы счисления".

Гипотетически, данный теоретик превзошел самого Кнута. Практически - Кнут издал многотомник и написал известную всем программу, а эксперт широко известен своими мнениями.

Ответить | Правка | Наверх | Cообщить модератору

231. "Проект по производству открытого процессора, совместимого с ..."  +1 +/
Сообщение от Sw00p aka Jerom (?), 02-Май-24, 12:18 
> Гипотетически, данный теоретик превзошел самого Кнута.

а че только Кнута? я тут камень в огород Лейбница кинул :)

Ответить | Правка | Наверх | Cообщить модератору

168. "Проект по производству открытого процессора, совместимого с ..."  +1 +/
Сообщение от Аноним (161), 01-Май-24, 14:25 
Поэтому реннесанс троичных ЭВМ начнётся не раньше массового распространения магнеторезистивной памяти и спинтронных методов обработки информации.
Ответить | Правка | К родителю #142 | Наверх | Cообщить модератору

182. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Май-24, 15:27 
> Поэтому реннесанс троичных ЭВМ начнётся не раньше массового распространения магнеторезистивной
> памяти и спинтронных методов обработки информации.

да суть не в троичности, ячейка памяти (хранилище бита) должен иметь "нейтральное" (не задействованное, пустое, свободное называйте как хотите) состояние, своего рода состояние переходного процесса между 0 -> 1, 1 -> 0. И это естественное "третье" состояние. А это "нейтральное" состояние неожиданно становится НЕОБХОДИМОСТЬЮ в "полной позиционной системе счисления".

Ответить | Правка | Наверх | Cообщить модератору

183. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Аноним (82), 01-Май-24, 15:40 
Так что делать-то? :)
Ответить | Правка | Наверх | Cообщить модератору

184. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Sw00p aka Jerom (?), 01-Май-24, 16:23 
> Так что делать-то? :)

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

Ответить | Правка | Наверх | Cообщить модератору

211. "Проект по производству открытого процессора, совместимого с ..."  –1 +/
Сообщение от Аноним (-), 02-Май-24, 02:52 
> да суть не в троичности, ячейка памяти (хранилище бита) должен иметь "нейтральное"
> (не задействованное, пустое, свободное называйте как хотите) состояние,

Это зачем? Чтобы профакать очень серьезный % емкости абсолютно ни на что? Гениально, Ватсон. Надеюсь, вы работаете в правильной фирме, куда саботажников засылать доктор прописал.

> своего рода состояние переходного процесса между 0 -> 1, 1 -> 0.

Это как ни странно используется в двоичных системах. Но не так как вы себе возомнили. Есть edge-triggered события/IRQ/etc. Возникающие по критерию rising edge или falling edge. Скажем тот же SPI или I2C на переход клока ориентируются для защелкивания состояния линии данных.

> И это естественное "третье" состояние.

И им даже пользуются. Но совсем не так как вы себе возомнили.

> А это "нейтральное" состояние неожиданно становится
> НЕОБХОДИМОСТЬЮ в "полной позиционной системе счисления".

Двоичная система прекрасна тем что это математика упрощенная до предела. Сильнее упростить нельзя. Такой подход делает многие вещи сильно проще. Скажем поделить на 2 в этой парадигме то же самое что right shift. И вот уже навороченная вроде бы операция становится 1-тактовой фигней. И таких микро-оптимизаций много где получается.

Ответить | Правка | К родителю #182 | Наверх | Cообщить модератору

232. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Sw00p aka Jerom (?), 02-Май-24, 14:30 
> Это зачем? Чтобы профакать очень серьезный % емкости абсолютно ни на что?

В смысле? я чет не понял, проясните о какой емкости идет речь?
Я  вообще-то про регистровую память говорил с фиксированной емкостью в битах (32 бита - еах к примеру) и как была она 32 бита, так и остается.

А суть, и собственно НЕОБХОДИМОСТЬ "третьего" состояния бита информации, в том, что -  при  использовании "полной позиционной двоичной системы счисления" не работает "правило лидирующих незначимых нулей".

Пример:

Допустим размер регистра - 8 бит. В обычной (используемой нами) неполной двоичной системе счисления значение регистра 00000100 (4) не отличается от 100 (4), так как это два одинаковых представления числа, с применением правила лидирующих незначимы нулей. А вот в полной двоичной системе счисления это не то чтобы два разных числа, это семь разных представлений семи разных чисел, 0 (0), 00 (2), 100(10), 0100 (18), 00100 (34), 000100 (66), 00000100 (258) (направление битов <--, число в скобках - десятичное обычное представление числа). ~~~Ого в восьми битах число 258 О_о.~~~

Вопрос, как их отличать если наш регистр если не хранит значение бита как 1, то хранит заведомо 0?

Как по мне, есть три решения:

1) Придумать что-то вроде динамического регистра. Это отдельная тема для рассуждений.

2) Если оставить фиксированный размер регистра, то необходимо ввести новый регистр "регистр длины".

К примеру:


Регистр А (обычный регистр) содержит значение 00000100, а регистр Б (регистр длины, размер в битах у обоих регистров одинаковый) содержит значение 00100000. Это своего рода плавающая единица в роли терминатора (ограничителя числа).

А - 00000100
Б - 00100000

истинное значение регистра А - 000100 (66)

3) Придумать "третье" состояние (незначимое значение) бита - допустим *. Тогда регистр А будет содержать следующее значение.

А - **000100 (66)

И это не "троичность" как может показаться, это аппаратное распознавание, или динамический регистр (хотя я его представляю немного иначе)

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

Ну да, но не в качестве значения бита ведь. Если я буду использовать это состояние в качестве значения бита, то получиться троичная система счисления.


> Двоичная система прекрасна тем что это математика упрощенная до предела.

А зачем тогда отказались от полной мощности представления чисел? Почему после цифры 9 идет не последовательность 00, а 10 ? Кто ответит на этот вопрос? Кто и когда решил лишить человечество полной мощности представления чисел "упрощая до предела арифметику"?

> Сильнее упростить нельзя. И таких
> микро-оптимизаций много где получается.

Предлагаю, просто реализуйте сумматор (однобитовый фулл) для "полной двоичной системы счисления" и сравните. Я вот пытался, и сравнивал количество использованных логических элементов, всегда выходило больше. Ну и зачем он нам такой? А теперь фокус, сдвиньте эту "полную двоичную систему счисления" на два значения вот так:

Было:

0 - 0 (десятичное представление числа)
1 - 1
00 - 2
01 - 3
......

Стало после сдвига:

0 - 2
1 - 3
00 - 4
01 - 5
....


И сново попробуйте реализовать сумматор :)

Ответить | Правка | Наверх | Cообщить модератору

246. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Аноним (246), 02-Май-24, 17:22 
> В смысле? я чет не понял, проясните о какой емкости идет речь?

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

> Я  вообще-то про регистровую память говорил с фиксированной емкостью в битах
> (32 бита - еах к примеру) и как была она 32 бита, так и остается.

Хранить 32 бита как только 1 и 0 это одно. А если еще третье состояние завести - это более сложная схема, чудес не бывает.

Хотя некие разновидности идеи используются. Скажем в некоторых диалектах Ethernet бывает PAM-3 или PAM-5 кодирование. Но это именно line coding, и такая структура сигнала возникает от требований zero DC bias (т.к. оно через трансформатор). Или в MLC флеше - усилитель чтения различает несколько уровней заряда, но вот там обычно число состояний кратно 2, для упрощения схем вокруг. Но наружу это как раз и не вылезает. Для упрощения "обвязки".

> А суть, и собственно НЕОБХОДИМОСТЬ "третьего" состояния бита информации, в том, что
> -  при  использовании "полной позиционной двоичной системы счисления" не
> работает "правило лидирующих незначимых нулей".

Никто не будет усложнять схемы на минимум треть чтобы порадовать любителей абстракций. А практические инженерные проблемы решаются более чем 1 способом, эффективно чем "лобовое" решение.

> системе счисления значение регистра 00000100 (4) не отличается от 100 (4),

Правильно. Этим оно и прекрасно. Состояние регистра всегда однозначно декодируемо. Ресет стараются всегда делать в оговоренное детерминированное состояние. И проч. И это как раз все делает сильно проще. И в схемотехнике и в понимании.

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

Что ведет к неэффективности на уровне схемотехнике и непоняткам. А потому нафиг надо.

> Вопрос, как их отличать если наш регистр если не хранит значение бита
> как 1, то хранит заведомо 0?

В двоичной логике нет понятия "регистр не хранит значение бита". Условились что всегда что-то хранится. В 8 бит регистре всегда 8 битов. И этот самый трекинг "хранится или не хранится" и ожрет часть емкости памяти, если кто не понял. Это крайне неэффективно. Треть схемы угрохана ни на что. Представьте себе что вместо 2 ядер проца можно 3 поставить на ту же площадь. А вместо 4 уже 6. Все еще хочется подарить треть площади абстракциям?

А вон то - упростило абстракцию и схемотехнику. Все что не 1 и 0 - undefined и в конечном итоге будет считано как либо 1 либо 0 а undefined лишь в том что не гарантируется конкретное из 2 значений. Более того - операции полной ширины проще в технической реализации. Всегда тупо толкнуть 8 битов в шину - сильно проще (и быстрее) чем выколупывать только нужные.

> Как по мне, есть три решения:
> 1) Придумать что-то вроде динамического регистра. Это отдельная тема для рассуждений.
> 2) Если оставить фиксированный размер регистра, то необходимо ввести новый регистр "регистр
> длины".

Я знаю одно забавное решение на тему - ASAN делает. Он загрубляет трекинг регионов до байта, и хранит по биту на 1 байт. Этим оверхед снижается до 1/8 от размера памяти что куда лучше 1/3 на битовом уровне. Но это ведет к ряду иного оверхеда и в целом тяжелая и медленная фича, при том в целом - программная, живущая по специфичным поводам как то трекинг ошибок софта в работе с памятью. Это не совсем то и не в хардваре, но идея немного похожа по общей логике действа.

> истинное значение регистра А - 000100 (66)

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

> 3) Придумать "третье" состояние (незначимое значение) бита - допустим *. Тогда регистр
> А будет содержать следующее значение.

Это все надо где-то как-то хранить. Как и лишние регистры. Что как бы не халявно по схемотехнике. И еще, одно дело пульнуть регистр в шину "как есть". Другое - разбирать это все выколупывая битики. Прелесть той двоичной логики в том что она упрощена до предела. Это минимальный набор математики который все еще работает. А его специфичная природа позволяет веселые оптимизации и в железе, и в софте. Тот же XOR допустим достаточно забавная операция, которую при должном абстрагировании можно эффективно к много чему привинтить. И прелесть всего этого в том что это тупо, брутально, простыми схемами, а потому - за 1 такт.

> И это не "троичность" как может показаться, это аппаратное распознавание, или динамический
> регистр (хотя я его представляю немного иначе)

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

> Ну да, но не в качестве значения бита ведь.

Абсолютно. Факт перехода - используется для координации момента защелкивания очередного бита, сигналя ремотной стороне что сейчас самое время утащить бит (биты). Это актуально для кусков систем живущих в разных clock domains. У какой-нибудь SPI флешки если тактирование внутри и есть, то какое-то свое. Никак не связанное с МК допустим.

> Если я буду использовать это состояние в качестве значения бита, то получиться
> троичная система счисления.

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

p.s. это вы еще не видели что можно выделывать с шинами где 2 провода. А если там еще и разные уровни сигналов закатить как MIPI DSI... но там половина инженеров сойдет с ума пытаясь осознать как ЭТО вообще работает.

>> Двоичная система прекрасна тем что это математика упрощенная до предела.
> А зачем тогда отказались от полной мощности представления чисел?

Я уже сказал - та двоичная система сделана такой для максимально простой и компактной реализации в железе. Там просто нет понятия "ячейка не хранит информацию". Это понятие - wasteful. Теряет часть информационной емкости системы by design и усложняет схемы.

> этот вопрос? Кто и когда решил лишить человечество полной мощности представления
> чисел "упрощая до предела арифметику"?

Вероятно, это случилось на заре становления цифровой логики, очень много лет назад. Когда условились что вольтаж равный 0 относительно земли это 0, а Vcc (питание) - единица. Коммутация между ними делается тривиально, парой транзисторов или типа того. Изначально даже дискретных - а потом и "несколько" на 1 кристалле. Паттерн оказался удачным и эффективным, а под него нашлись нехилые оптимизации математики использующие те свойства. Многое крипто штатно уповает на допустим wrap-around N-bit регистра. А какие-нибудь LFSR вполне целенаправленно соединяют выходы и входы. С понятием "нет значения" этот фокус стал бы многократно сложнее.

> Предлагаю, просто реализуйте сумматор (однобитовый фулл) для "полной двоичной системы
> счисления" и сравните.

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

> Стало после сдвига:
> 0 - 2
> 1 - 3
> 00 - 4
> 01 - 5
> ....

Чем-то код Грея напоминает. Но зачем возиться с сдвигами? Двоичная система интересна тем что все в лоб, максимально просто и брутално. При этом она достаточно проста в осознании на самом деле.

> И сново попробуйте реализовать сумматор :)

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

Ответить | Правка | Наверх | Cообщить модератору

255. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Sw00p aka Jerom (?), 02-Май-24, 21:31 
> О информационной емкости памяти. Если у памяти завести дополнительное состояние указывающее
> что оно не инициализированая + 2 состояния - о, круто, треть
> емкости профачена на бесполезняк.

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

> Хранить 32 бита как только 1 и 0 это одно. А если
> еще третье состояние завести - это более сложная схема, чудес не
> бывает.

что должен сделать Паскаль в своей "Паскалине", чтобы перейти от неполной дестяичной системы к полной? Из ваших соображений, он дожен либо увеличить радиус барабана чтобы добавить 11-тое деление незначимого характера (пустой сектор), либо переразбить тот же радиус уже не на 10, а на 11 более меньших секторов делений. В чем проблема? В схематехнике нынешней проблема может быть только в устойчивости 3-го состояния, хотя и три-стейт реализации тоже имеются. Тип такого

https://www.ti.com/lit/ds/symlink/sn74hcs126.pdf?ts=17145953...

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

лол, а чеж тогда банальный Ripple-carry adder не используется в современной выч технике? Он же самый простой схематически. :) Не то чтобы усложнять, они еще любители и переусложнять я бы сказал ;)


> И проч. И это как раз все делает сильно проще. И в схемотехнике и в
> понимании.

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

> Что ведет к неэффективности на уровне схемотехнике и непоняткам. А потому нафиг
> надо.

А кто сказал (доказал), что эффективно хранить допустим 3 бита в 8 битном регистре? Почему это не эффективно иметь для каждой длины собственный регистр?

0 - A
00 - B
000 - C
0000 - D
00000 - E
000000 - F
0000000 - G
00000000 - H

Эффективно в RISC-V иметь отдельный регистр для нуля ("железный нуль")?

> В двоичной логике нет понятия "регистр не хранит значение бита". Условились что
> всегда что-то хранится.

Ок, условились, как мне теперь реальзовать полную систему счисления? У меня 8 битов (ячеек, клеток, корзин) и два значения 0 и 1, одно из которых (0) заведомо лежит во всех битах. В регистры А и Б положили некоторые числа в полной системе счисления, подали на вход сумматору (полному) и он записал в регистр В результат. И как мне понять какое число представлено в В?


> В 8 бит регистре всегда 8 битов. И
> этот самый трекинг "хранится или не хранится" и ожрет часть емкости
> памяти, если кто не понял. Это крайне неэффективно.

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

Приведу простой пример для наглядности: возьмем допустим число 497 (десятичное обычное)


111110001 - Вот так оно представленно в нынешней двоичной системе.
*11110011 - А вот так оно представлено в полной двоичной системе.

Что мы видим на первый взгляд? Разница в один бит, уже выигрыш какой-то, и та крайняя 1 (единица) (у этой записи 111110001) есть ничто иное как терминатор, если бы мы использовали полную систему. То есть, что хочу сказать, нынешняя неполная система счисления может трактоваться как полная для n-1 бита от всей битности регистра с добавлением избыточного бита "терминатора", получается что это естественный термитанор полной системы. Но в таком случае нет никакого выигрыша, отсюда делаю вывод, для представления полной двоичной системы, необходимо три состояния бита, два из которых - значимые.


> Это не совсем то и не в
> хардваре, но идея немного похожа по общей логике действа.

вы про карту "занятости" ячеек памяти во всяких аллокаторах?


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

Вот говорите условились, вот ведь изначально вообще нигде и не кем не реализовывалась полная система счисления, будь то в Паскалине (десятичной) вплоть до нынешних выч машинах бинарных. Я даже не говорю, что даже Лейбниц не упомянул об этом в своем письме про двоичное представление числа, хотя он срисовал с китайской книги перемен, но там триграмма описывается полной двоичной системой. Там есть триграмма 000 (Кунь (Земля)) (если две палочки это 0, а одна сплошшная - 1). Есть и 001 (Чжэнь (Гром)) и все комбинации бинарной системы - значимы, нет понятия незначимых лидирующих нулей, что и есть полнота представления.

https://ru.wikipedia.org/wiki/%D0%9A%D0%...


> Да я понял о чем вы. Но с практической точки зрения что
> совой о пень что пнем о сову, хранить третье состояние как-то
> где-то надо и на уровне схемотехники и емкости памяти примерно один
> фиг по проблематике будет. Так что отличия больше в формальностях абстракции.

ну и чем обоснована замена "экономичная" схема последовательного сумматора, от "экспоненциально не экономичного" параллельного?


> Я уже сказал - та двоичная система сделана такой для максимально простой
> и компактной реализации в железе. Там просто нет понятия "ячейка не
> хранит информацию". Это понятие - wasteful. Теряет часть информационной емкости системы
> by design и усложняет схемы.

Что я теряю деля вольтаж между 0В и 1В на N частей?

> Но зачем возиться с сдвигами? Двоичная система интересна тем что все в лоб, максимально просто и брутално.

А я не с проста вам это сказал, оказывается если сдвинуть "полную двоичную систему счисления" на два значения, то в качестве сумматора применим обычный сумматор "неполной двоичной системы" :) Вот вам и фокус, и ничего переизобретать не надо. И получаем преимущество в полной мощности двоичного представления числа и сумматором, количество логических элементов которого равно сумматору "неполной двоичной системы" ;)

> Мой пойнт в том что знать usage бита избыточно и нафиг нужно. Только лишний
> оверхед зазря.

А не оверхед всякие CE, SE, OE, буфера, линии задержек и т.д.?

Ответить | Правка | Наверх | Cообщить модератору

265. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Аноним (-), 03-Май-24, 22:44 
> Сколько в таком случае "информационной емкости" профукано, когда мы пользуемся десятичной
> системой счисления и пишем цифры в клетки в тетрадке?

baseN с N > 10 расходовал бы площадь эффективнее. Но у обезьян 10 пальцев! Впрочем я HEX оперирую, мне норм.

> что должен сделать Паскаль в своей "Паскалине", чтобы перейти от неполной дестяичной

Ему двоичная система в ТОМ виде ни к чему. В тч по площади бумаги и письму. Это оптимизация под ДРУГИЕ нужды. HEX, вероятно появился поэтому.

> меньших секторов делений. В чем проблема? В схематехнике нынешней проблема может
> быть только в устойчивости 3-го состояния,

Промежуточное состояние триггера из 2 симметричных половинок это что?! Активна либо 1 половина либо 2-я. By design. И так много с чем еще.

> хотя и три-стейт реализации тоже имеются. Тип такого

Сделать можно что угодно. Вопрос в соотношениях. В целом удобнее всего в железе то. Впрочем это не отменяет существования странных вещиц. Например, простые RF протоколы порой кодируют биты как 001 -> 0 и 110 -> 1. Т.е. 3-в-1. Это для гарантии перепадов в каждом бите. Или бывает PAM3/PAM5. Но он есть только между трансиверами эзернета и проч. Остальные ЭТО не видят. Как раз для их удобства это изничтожается как можно раньше.

> технике? Он же самый простой схематически. :) Не то чтобы усложнять,
> они еще любители и переусложнять я бы сказал ;)

В очень сильно частных случаях - могут и (пере)усложнить во имя каких-то понятных goal'ов. Но вбить махровый якорь? В самое core? Везде, по всей площади? Во имя луны? Не дождетесь.

> Это должно быть доказано. Эт как в алгоритмах, к примеру,

Методом от противного:
1) покажте что-то проще инвертора с 2 комплементарными MOSFET?
2) то же самое для триггера из 2 половинок (транзисторов или лог элементов). Эта структура by design защелкивается либо в 1 половине либо в другой. Все что сверх этого - нехилые костыли.

> чеж мы унарную систему не используем ? Сложить ведь два унарных
> числа - обычная операция.

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

> А кто сказал (доказал), что эффективно хранить допустим 3 бита в 8 битном регистре?

Эффективность штука многофакторная. Например есть характерный tradeoff в скорости VS "потребление памяти". Оперировать юнитами 1 размера быстрее, но порой больше памяти ест.

Это можно ощутить и в софте, поюзав bit fields в С (struct) например. Операции менее минимального юнита ведут к оверхеду от read-modify-write.

> Почему это не эффективно иметь для каждой длины собственный регистр?

Потребуется больше регистров и обвязки из шин/интерконектов, а также логика которая трекает длину операнда, что не халявно ни по площади ни по скорости. Самые простые cpu core RISC с фиксированой шириной команды, так декодер проще всего (заодно и быстрый).

> Эффективно в RISC-V иметь отдельный регистр для нуля ("железный нуль")?

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

> Ок, условились, как мне теперь реальзовать полную систему счисления?

Ваши трудности. Той задачи никто не ставил. Существующая система счисления работает не хуже любой иной, на ней держится вся планета с кучей абстракций, и в целом всем ОК оказалось.

> У меня 8 битов (ячеек, клеток, корзин) и два значения 0 и 1, одно
> из которых (0) заведомо лежит во всех битах.

В регистре НЕ ОБЯЗАНЫ быть нули после ресета. ROM вообще содержит что угодно. Всегда. Если это чем-то лучше. Но у ROM тоже только 0 и 1. Перемычка (диод в древних дискретных, ...) есть или нет. Так проше всего. Если логическая функция дурацкая, входов немного, сделать ROM table вместо лобовой реализации вариант. Или как и почему в CISC появился uCode ROM.

> В регистры А и Б положили некоторые числа в полной системе счисления, подали на
> вход сумматору (полному) и он записал в регистр В результат. И
> как мне понять какое число представлено в В?

К регистру стандартно проводов по числу разрядов и подключение к шине простейшая коммутация. Без парсинга. Так проще всего. Все IO по возможности шириной в шину/регистр и без парсинга.

У регистра, особенно 8 бит может не быть операции "частичной" записи. Вы всегда пишете 8 битов. В более широких возможны варианты. Но есть DSP которые принципиально видят мир - словами по 16. И только так! Адресовать байт не умеют принцпиально, даже "char" в си 16 битов. Компилер, конечно, сделает read-modify-write, претендуя что смог потрогать и отдельный байт, но это будет очень неэффективно в такой системе.

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

Логика обработки переменной длины, выборки битов и маскирования перевесит ту экономию с большим отрывом. И все тормознет. Особенно на битовом уровне. Если не жестить и ограничиться границами байтов, у CISC возможны команды переменной длины. Но сложный тормозной декодер как недостаток парадигмы возникает именно в этом месте, как и фееричные костыли. Оттуда же и потуги его оторвать (VLIW) или упростить структуру команд (RISC). Первое таки

> 111110001 - Вот так оно представленно в нынешней двоичной системе.
> *11110011 - А вот так оно представлено в полной двоичной системе.

Хранение "*" требует новое состояние памяти. И его рюхание. Везде. Усложнив ВСЕ схемы.

А теперь вот вам ROM. Координатная сетка и перемычки на пересечениях. Есть перемычка, 1. Нет - 0. А теперь запищите туда "*". Офигенно удобно, да? :)

> Что мы видим на первый взгляд? Разница в один бит, уже выигрыш
> какой-то, и та крайняя 1 (единица) (у этой записи 111110001) есть

На второй мы получим дофейхоа оверхеда для рюхания этой логики, который перевесит. Ну вот столь простая структура как ROM в этой парадигме как физически будет реализован допустим? Чтоб компактно и эффективно? Проверить наличие или отсутствие перемычки электрически не проблема. Но это 1 или 0. Без пространства "in between".

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

Мельник был собой хорош: потратил шиллинг, заработал грош.

> вы про карту "занятости" ячеек памяти во всяких аллокаторах?

Типа того. ASAN специфичный и особо дотошный вариант, но даже он смог скостить оверхед до 1/8 в этом месте.

> нынешних выч машинах бинарных.

Ну вот та система делана - под простоту реализации и скорость работы. Там не было задачи трекать "незанятые" ячейки. Игра ума это прекрасно, но там играли в сторону простоты и скорости реализации, в том числе и взяв систему счисления которая еще работает, но уже удобна для тех целей.

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

У них не было цифровых систем - и они были далеки от той проблематики. Их не парили аспекты скорости, числа транзисторов, проводов, возможности сделать ROM перемычками, тот факт что у триггера активна 1 половина или 2-я и проч.

> ну и чем обоснована замена "экономичная" схема последовательного сумматора, от
> "экспоненциально не экономичного" параллельного?

Скоростью ессно. Если кто не заметил, в начале были и 1-битные последовательные процы, а 4004 изначально 4-битный. Но в какой-то момент оказалось что повысть частоту в 8 раз для той же скорости - "душно". Тогда приходится расширяться в другие измерения. Например в число транзисторов. Сейчас та же история с ядрами. Частоты на 10ГГц обломались, пришлось оптимизировать ядра, пакуя больше ядер на кристалл.

> Что я теряю деля вольтаж между 0В и 1В на N частей?

1) Помехоустойчивость. Теперь и 1/N возмущения хватит чтобы сбить уровень. Главная причина хлипкости MLC/TLC/QLC флеша. "Distance between symbols" в сленге line coding.
2) Простоту коммутации, кодирования и декодирования.
3) Структуры CMOS нативно с этим не работают. Там открыт или нижний транзистор или верхний, и оно или 0 или Vcc. Равно как ROM, триггеры с активной 1 или 2 половиной и проч. Многие базовые вещи станут неприменимы.

> двоичную систему счисления" на два значения, то в качестве сумматора применим
> обычный сумматор "неполной двоичной системы" :) Вот вам и фокус, и
> ничего переизобретать не надо.

Остается вопрос "нафига все это было"? Вон те многочисленные аспекты это никак не отменяет же. Заодно сдвиг усложняет счет для людей.

> представления числа и сумматором, количество логических элементов которого равно сумматору
> "неполной двоичной системы" ;)

Теперь покажите мне ROM который вы к этому интерфейсить будете например и посмотрим что вы там сэкономить сможете :)

> А не оверхед всякие CE, SE, OE, буфера, линии задержек и т.д.?

"Электрически" биты не устаканиваются в нужное значение мгновенно - и поэтому совсем без этого нихрена не получится. Эти времянки - 1 из лимитирующих достижимую частоту факторов.

Но FYI быстрые последовательные шины появились в том числе и чтобы не заниматься выравнивнием времянок пачек битов. Что душно на более менее "длинном" проводе. Это однако совсем не халявный маневр и делать внутреннюю логику по таким принципам нафиг надо. Чисто внешние интерфейсы.

Ответить | Правка | Наверх | Cообщить модератору

267. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Sw00p aka Jerom (?), 04-Май-24, 00:14 
> Впрочем это не отменяет существования странных вещиц. Например, простые
> RF протоколы порой кодируют биты как 001 -> 0 и 110
> -> 1.

эт же коды коррекции ошибок

> Эта структура by design

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

> То было самой простой системой счисления которая позволяет то же что другие,
> но проста для реализации "в железе". Оттуда же и регистры фиксированой
> ширины, с максимально простым сплевом этого в шины и проч по
> возможности без парсинга.

А кто-то пытался сделать регистры переменной длины?

> Потребуется больше регистров и обвязки из шин/интерконектов, а также логика которая трекает
> длину операнда, что не халявно ни по площади ни по скорости.
> Самые простые cpu core RISC с фиксированой шириной команды, так декодер
> проще всего (заодно и быстрый).

А за счет чего росла ваша скорость? О чем вообще говорит закон Мура и т.д.? Почему щас выч машина помещается в карман?

> Не создаст проблем для реализации в железе, а поток команд сможет скипать
> явный вгруз константы. Нормальный tradeoff.

Создаст проблем такой же железный регистр забитый единицами?

> Ваши трудности. Той задачи никто не ставил. Существующая система счисления работает не
> хуже любой иной, на ней держится вся планета с кучей абстракций,
> и в целом всем ОК оказалось.

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

> Хранение "*" требует новое состояние памяти. И его рюхание. Везде. Усложнив ВСЕ
> схемы.

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

> А теперь вот вам ROM. Координатная сетка и перемычки на пересечениях. Есть
> перемычка, 1. Нет - 0. А теперь запищите туда "*". Офигенно
> удобно, да? :)

А вот тут передергивание, ну вот попробуйте описывать точки на координатной (двумерной) сетке тремя значениями (x, y, ?). ? - это что на координатной (двумерной) плоскости?

> Ну вот столь простая структура как ROM в этой парадигме как
> физически будет реализован допустим? Чтоб компактно и эффективно?

как трехмерная координатная система, как еще? если обычная РОМ у вас двумерная.


> Ну вот та система делана - под простоту реализации и скорость работы.

Система для общего назначения по определению не может быть простой и темболее быстрой.


> Тогда приходится расширяться в другие измерения.

Ну вот ждем РОМ в третьем измерении.

> Остается вопрос "нафига все это было"? Вон те многочисленные аспекты это никак
> не отменяет же. Заодно сдвиг усложняет счет для людей.

лол, а скоих пор двоичная система счисления это для людей? 80% людей земного шара про нее не слышали.

> Теперь покажите мне ROM который вы к этому интерфейсить будете например и
> посмотрим что вы там сэкономить сможете :)

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

Ответить | Правка | Наверх | Cообщить модератору

270. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Аноним (270), 05-Май-24, 05:22 
> эт же коды коррекции ошибок

В тех конкретных случаях это скорее "подобие манчестера". Для избегания длинных последовательностей одинаковых битов (это ухучшает прием сигнала). Ряд сравнимых штук используют манчестер (и его варианты) с той же целью. Дает на треть меньше оверхеда. Более того, получение вещей типа 101 или 010 - это "RX error" в общем то. В принципе это знание бывает полезно - для более мощного FEC типа рид-соломона можно маркировать "erasure".

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

У тех дизайнов есть забойное преимущество: ОНИ ПРОСТЫЕ! Поэтому проводов и интерконектов минимум, плозадь кристала используется эффективно, ячейка памяти в SRAM - 6 транзисторов, в DRAM 1 и конденсатор. В ROM - перемычка, или в случае флеша, полевик с вталкиваемым в изолированый затвор зарядом.

В флеше кстати структура круто оптимизирована на экономию площади. EEPROM с независимым побайтовым доступом намного удобнее програмерам и софту. Но это ведет к лишним интерконектам. Поэтому получил развитие флеш. Стираемый исключительно крупноблочно. Это оптимизация числа проводов на самом деле была. И на равной площади умещается куда больше инфо. Значит дешевле в пересчете на байт. Порой сильно дешевле, нанд прошел длинный путь в этом направлении.

> А кто-то пытался сделать регистры переменной длины?

В кремнии структуры - фиксированы. Как вытравили - так и есть. Что-то с этим сделать? Ну вон FPGA - делают. Но это дофигища оверхеда, так что получается дорого, медленно, большой кристалл и жрет много. И имеет хождение только как прототипный инструмент и бомж-вариант ASIC когда несколько жирных FPGA все же дешевле чем пуск ASIC в производство, даже если он и был бы в цать раз эффективнее. При должном масштабе задачи (например коины) - ASIC рвут FPGA в хлам.

Трекинг фактического размера и коммутация всего этого - не получится халявной.

> А за счет чего росла ваша скорость? О чем вообще говорит закон
> Мура и т.д.? Почему щас выч машина помещается в карман?

По совокупности факторов. Тик-так, тик-так. Уперлись в частоты процесса? А вот будем несколько битов за раз. А вот процесс потоньше. А вот мы тогда еще битов за тот же такт сжуем, раз транзисторы умещаться стали. И, вот, итеративно отыгрывали там и тут, правая рука подыгрывала левой и наоборот. А вы предлагаете испортить и сделать неудобно. Вас с этим не поймут, они эвон как убивались с оптимизацией всех структур.

> Создаст проблем такой же железный регистр забитый единицами?

Да не особо. Вопрос в том насколько это комбо нужно софту и набору команд. Ноль в софте встречается чаще чем 0xFF, 0xFFFF, 0xFFFFFFFF, ... имхо. Скажем коды возврата из функций часто сравнивают с нолем, etc. А с 0xFFFF... - скорее экзотика. Ну и вот тут уже вопрос - а надо ли площадь кристалла на это и его обвес тратить? Что даст взамен?

> Той задачи никто не ставил - этой фразой можно закрыть всю дискуссию.
> Ну была земля плоской и все вращалось вокруг нее, кого черт
> дернул все изменить?

Тех кто просек что она не такая уж и плоская. Сие однако не мешает существовать забавным картографическим проекциям, если мы об этом. Просто потому что с прямоугольником работать проще чем с поверхностью шара. Слыхали про quad-tree когда-нибудь? Да, дерево может быть и 2-мерное. Но вот именно с поверхностью шара это делать... эм...

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

Это все очень не халявно по схемотехнике и площади кристаллов и интерконектов. Третье состояние не может взяться изниоткуда - и тем более передаваться по проводам без усложнения трансиверов, коммутаторов и проч.

> А вот тут передергивание, ну вот попробуйте описывать точки на координатной (двумерной)
> сетке тремя значениями (x, y, ?). ? - это что на координатной (двумерной) плоскости?

Физическая реализация какая? MASK ROM или OTP ROM зачастую вот реально - куча металлических проводов перпендикулярно (RAM и ROM/Flash хорошо видны на кристалле как характерные массивы). В программируемом - перемычка выпаливается мощным импульсом. В масочном - перемычки делают литографией кодируя нужные значения. Наличие или отсутствие перемычки кодирует 1 или 0. И в этом процессе нет места для промежуточных значений так по простому. И вот один из базвых элементов - пролетает. Надо какой-то другой. Заметно более сложный. А там как раз чем больше оверхеда и интерконектов тем ниже емкость. Вон то - оптимизировано до своих пределов. И в таком виде юзается более полувека, вероятно.

> как трехмерная координатная система, как еще? если обычная РОМ у вас двумерная.

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

> Система для общего назначения по определению не может быть простой и темболее быстрой.

Ну так ASIC и обставляют системы общего назначения от души. Проблема в том что они не переконфигурируемые - и поэтому если вдруг стала нужна какая-то другая задача, asic становится бесполезен. А процессоры взяли свое тем фактом что они балансируют между скоростью и реконфигуряемостью на другие задачи. FPGA тоже это делают - и ряд вещей там куда быстрее и круче. Но это специфичная и дорогая штука.

>> Тогда приходится расширяться в другие измерения.
> Ну вот ждем РОМ в третьем измерении.

Не существует эффективных 3-мерных технологий компоновки -> не вписывается в существующие техпроцессы.

> лол, а скоих пор двоичная система счисления это для людей? 80% людей
> земного шара про нее не слышали.

Они и электричество не понимают. И закон Ома не знают. И чего?

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

Нет. Только пара книжек по полупроводниковой схемотехнике.

Ответить | Правка | Наверх | Cообщить модератору

234. "Проект по производству открытого процессора, совместимого с ..."  +/
Сообщение от Sw00p aka Jerom (?), 02-Май-24, 14:42 
в обычном сумматоре, есть перенос и нет переноса, для "полной системы" есть перенос 0, 1 и нет переноса.

А теперь представьте систему счисления, что перенос заведомо есть всегда в каждом разряде ;)

Ответить | Правка | К родителю #211 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру