The OpenNET Project / Index page

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



"Проект по производству открытого процессора, совместимого с Z80"
Версия для распечатки Пред. тема | След. тема
Форум Разговоры, обсуждение новостей
Исходное сообщение [ Отслеживать ]
Заметили полезную информацию ? Пожалуйста добавьте в FAQ на WIKI.
. "Проект по производству открытого процессора, совместимого с ..." +/
Сообщение от Аноним (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ообщить модератору

Оглавление
Проект по производству открытого процессора, совместимого с Z80, opennews, 30-Апр-24, 11:52  [смотреть все]
Форумы | Темы | Пред. тема | След. тема



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

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