User Tag List

Страница 5 из 15 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 145

Тема: Commercial Instruction Set (CIS) на PDP-11 и я

  1. #41

    Регистрация
    26.03.2019
    Адрес
    г. Киев, Украина
    Сообщений
    98
    Спасибо Благодарностей отдано 
    133
    Спасибо Благодарностей получено 
    51
    Поблагодарили
    26 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Немного оффтоп. Самое смешное, что MySQL еще лет 10 тому хранил и обрабатывал NUMERIC не как BCD, а как Float. С потерей точности на операциях. И приходилось людям объяснять, почему биллинг нельзя просто так перенести на MySQL. Может он и сейчас такой ущербный, лень проверять.

  2. #42

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    так шо - кому она та плавучка нужна?
    При научных вычислениях, когда нужно быстрее, так как вычислений МНОГО

    Цитата Сообщение от yu.zxpk Посмотреть сообщение
    MySQL еще лет 10 тому хранил и обрабатывал NUMERIC не как BCD, а как Float
    Ну а чё, вместо того, что бы написать соответствующие процедуры, берём float - и всё типа тип-топ. Ключевое слово - типа

    - - - Добавлено - - -

    Я тут прикинул так на пальцах, если делать для (современного) проца что то типа CIS от DEC, то надо максимальную длину BDC числа делать не 31 (десятичная) цифра, а 124
    Последний раз редактировалось Hunta; 14.10.2020 в 19:52.

  3. #43

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    При научных вычислениях, когда нужно быстрее, так как вычислений МНОГО
    Угу, и моделированием плазмы в фронте волны ядерного взрыва я тоже занимался. Но это было еще до кассовых аппаратов
    На СМ4 с FIS, потом СМ1420 с FPP. Сначала ты две недели считаешь, потом проводишь проверку законов сохранения заряда, имульса и энергии и ничего не сходится, начинаешь искать где же оно точность потеряло. Блин, фортрановский REAL, оказывается фигня, DOUBLE? Ну здравствуйте, виртуальные массивы

    Но мой пост был о том что кассовый аппарат - это навороченная бухгалтерская программа - скидки, налоги, конвертация валют, проценты за услуги, накопительные итоги, весовые товары - дофига всего бухгалтерского, и вполне нормально живет без этих ваших флоат и бцд.
    Последний раз редактировалось Vslav; 14.10.2020 в 21:31.

  4. #44

    Регистрация
    26.03.2019
    Адрес
    г. Киев, Украина
    Сообщений
    98
    Спасибо Благодарностей отдано 
    133
    Спасибо Благодарностей получено 
    51
    Поблагодарили
    26 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    ... и вполне нормально живет без этих ваших флоат и бцд.
    А расскажи про 4-bit ALU в серии AM2900: зачем там отдельный флаг для переноса, если число == 10?

  5. #45

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от yu.zxpk Посмотреть сообщение
    А расскажи про 4-bit ALU в серии AM2900: зачем там отдельный флаг для переноса, если число == 10?
    В Am2900 такого флажка не припомню. А вот в 8080 оно есть, да. Ну не все умеют в кассовый аппарат без float. Вот для людей попроще такой флажок и сделали

    Ты бы видел структуру дневного Z-отчета. Там все упаковано-переупаковано, какой там BCD, размер фискальной памяти очень жесткий, изволь 2100 отчетов (7 лет срок службы, 2100 минимум для сертификации надо) в 64К засунуть, бо 128К уже денег больше стоит.

    Насчет точности BCD для десятичной плавучке - оно возможно, но для бухгалтерии точность банально решается увеличением разрядности (см. кассу), для научки тоже нужна разрядность, но точность там менее критична (более того - точность десятичных дробей там бессмысленна), скорость важнее - BCD в пролете. Единственное реальное преимущество BСD - это быстро делить/умножать на 10, в остальном оно сомнительно. Ну и да, историческая совместимость, для фана. 8080 инструкцию для BCD имеет, а вот SSE/AVX инструкций для BCD не видать
    Последний раз редактировалось Vslav; 14.10.2020 в 22:02.

    Этот пользователь поблагодарил Vslav за это полезное сообщение:

    yu.zxpk(14.10.2020)

  6. #46

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    вполне нормально живет без этих ваших флоат и бцд
    Ещё раз напомню, когда это всё первоначально создавалось. Какие, блин, микропроцессоры, какие, блин 64 кб памяти?? Вот и запихали формат, который удобен хранения и вычислений на уровень команд. Да, сейчас всё это уже не сильно применимо в силу разрядности процов, доступной памяти и скорострельности.
    Цитата Сообщение от Vslav Посмотреть сообщение
    но для бухгалтерии точность банально решается увеличением разрядности
    Да? И как это сделать на 16-ти разрядной машине, у который крайне ограниченные возможности по большей разрядности? Очень просто - уходить от двоичной на большую разрядность. Идеальные варианты будут кратны степеням двойки, ещё более идеальные - размеру байта. Как тебе арифметика с основанием 256? Но вот проблема - эту нужно рисовать соответствующие команды и опять таки - проблемы с вводом/выводом (нужны преобразования). Поэтому и придумал кто-то промежуточный вариант - хранение чисел в формате с основанием 10. Очень удобно для людей, ввода/вывода, больше разрядов, большая относительная скорострельность по сравнению с основание 2 (меньше циклов), а уж если это запихать на уровень команд процессора...

  7. #46
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #47

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Да? И как это сделать на 16-ти разрядной машине, у который крайне ограниченные возможности по большей разрядности?
    Ну кассовые аппараты лет 10 жили на AVR, оно как бы 8-битное. Мы еще с mega103 начинали, в 1997 году, как только оно появилось на рынке - сразу в оборот пошло. Я еще avreal помню , потом уже свой прошивальщик замутили. Написали на ассемблере библиотеку для типа tword - основные арифметические операции + плюс несколько специальных функций с больших промежуточным итогом и все.

    Цитата Сообщение от Hunta Посмотреть сообщение
    Как тебе арифметика с основанием 256?
    Да нормально, тем более целочисленная обеспечивает полную точность, а там где округления - ТУ на кассы все очень точно описывает (и в обычной бухгалтерии - тоже).

    Цитата Сообщение от Hunta Посмотреть сообщение
    проблемы с вводом/выводом (нужны преобразования).
    С вводом-выводом проблем нет - индикатор, принтер, порт выводят числа сильно медленнее чем даже AVR успевал это преобразовать.
    Там проблема со счетом, приходит тебе SQL-запрос и нужно посканировать флешку и миллион записей сложить, от тут BCD лишние секунды и сожрал бы.

    Цитата Сообщение от Hunta Посмотреть сообщение
    больше разрядов, большая относительная скорострельность по сравнению с основание 2 (меньше циклов)
    Вот я не понял где тут в BCD большая скорострельность. Возьмем два числа - 1222333444 1000111222, в дополнительном коде это 4 байта, в BCD - 5. Уже на 25 процентов больше объема. Перенос в BCD между байтами кривой, на ALU не ложиться. Даже между разрядами в байте кривой - на 8080 нужно сначала сложить, потом делать коррекцию.

    Не, ну исторически применение BCD понятно, но сейчас-то оно никак не живет. Ну нету SSE/AVX инструкций BCD, не надо оно сейчас никому.

  9. #48

    Регистрация
    26.03.2019
    Адрес
    г. Киев, Украина
    Сообщений
    98
    Спасибо Благодарностей отдано 
    133
    Спасибо Благодарностей получено 
    51
    Поблагодарили
    26 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Если интересно, почему "VAX загнулся" и при чем тут сложные для реализации инструкции - есть Long Read:
    https://yarchive.net/comp/vax.html

    Вот цитата, которая объясняет невозможность реализации Out-Of-Order (OOO) execution в VAX:

    ILP, NORMAL INSTRUCTIONS, and IA-32 VERSUS VAX

    Consider the normal unprivileged instructions that need to be executed
    quickly, meaning with high degrees of ILP, and with minimal stalls from
    memory system.

    RISC instructions make 0-1 memory reference per operation. Despite the
    messy encodings, *most* IA-32 instructions (dynamic count) can be
    directly decoded into a fixed, small number of RISC-like micro-ops,
    with register references renamed onto the (larger) set of physical
    registers. Both IA-32 and VAX allow unaligned operations, so I'll
    ignore that extra source of complexity in the load/store unit.

    In an OOO design, the front-end provides memory references to a
    complex, highly-asynchronous load/store/cache control unit, and then
    goes on. In one case, [string instructions with REP prefix], IA-32
    needs the equivalent of a microcode loop to issue a stream of micro-ops
    whose number is dependent on an input register, or dynamically, on
    repeated tests of operands. Such operations tend to lessen the
    parallelism available, because the effect is of a microcode loop that
    needs to tie together front-end, rename registers, and load/store unit
    into something like a lock-step. Although this doesn't require that
    all earlier instructions be retired before the first string micro-ops
    are issued, it is likely a partial serializer, because it's difficult
    do much useful work beyond an instruction that can generate arbitrary
    numbers of memory references (especially stores!) during its execution.

    However, the VAX has more cases, and some frequent ones, where the
    instruction bits alone (or even with register values) are insufficient
    to know even the number of memory references that will be made, and
    this is disruptive of normal OOO flow, and is likely to force difficult
    [read: complex, high-gate-count or long-wire] connections among
    functional blocks on a chip. Hence, while the VAX decoding complexity
    can be partially ameliorated by a speculative OOO design with decoded
    cache [I alluded to this in the RISC CISC 1991 posting], it doesn't
    fix the other problems, which either create microcode lock-steps
    between decode, load/store, and other execution units, or require other
    difficult solutions. In some VAX instructions, it can take a dependent
    chain of 2 memory references to find a length!

    VAX EXAMPLES [1], [2], especially compared to IA-32 [10] and sometimes
    S/360.

    Specific areas are:
    - Decimal string ops
    - Character string ops
    - Indirect addressing interactions with above
    - VAX Condition Codes (maybe)
    - Function calls, especially CALL*/RET, PUSHR/POPR.

    DECIMAL STRING OPERATIONS: MOVP, CMPP, ADDP, SUBP, MULP, DIVP, CVT*,
    ASHP, and especially EDITPC: are really, really difficult without
    looping microcode. [S/360 has same problem, which is why (efficient)
    non-microcoded implementations generally omitted them. The VAX
    versions, especially the 3-address forms, are even more complex than
    the 2-address ones on S/360, and there are weird cases. DIVP may
    allocate 16-bytes on the stack, and then restore the SP later.

    Этот пользователь поблагодарил yu.zxpk за это полезное сообщение:

    Vslav(15.10.2020)

  10. #49

    Регистрация
    30.11.2015
    Адрес
    г. Самара
    Сообщений
    7,505
    Спасибо Благодарностей отдано 
    344
    Спасибо Благодарностей получено 
    712
    Поблагодарили
    594 сообщений
    Mentioned
    13 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vslav Посмотреть сообщение
    Написали на ассемблере библиотеку для типа tword - основные арифметические операции + плюс несколько специальных функций с больших промежуточным итогом и все.
    Ну так вот это и есть, по сути, идея CIS - уйти от арифметики с основанием 2 к большему основанию.
    Цитата Сообщение от Vslav Посмотреть сообщение
    4 байта
    Не 4 байта, а 32 бита, то есть, грубо - цикл, повторенный 32 раза (ещё раз - мы берём классическую арифметику по основания 2), 1222333444 - 10 цифр - цикл, повторенный 10 раз. Если развивать идею с битностью, предположим, что у нас на аппаратном уровне есть 8-ми битный умножитель, тогда да, для 4-ёх байтного числа - цикл, повторенный 4 раза.
    Цитата Сообщение от Vslav Посмотреть сообщение
    на 8080 нужно сначала сложить, потом делать коррекцию.
    А причём здесь 8080 - мы ведём разговор о PDP-11, CIS и почему оно будет в общем случае быстрее (на больших числах), чем программная реализация. И CIS у нас вполне полноценный в этом плане - без всяких этих костылей в 8080

    - - - Добавлено - - -

    Цитата Сообщение от yu.zxpk Посмотреть сообщение
    Если интересно, почему "VAX загнулся"
    С моей точки зрения, VAX загнулся, потому что идеи его архитектуры базировались на устаревших принципах
    Но RISC мне тоже не нравится
    Где то в какой то момент развитие процессоров свернуло не туда.. Но вот как лучше и более правильно - пока не могу придумать

  11. #50

    Регистрация
    31.03.2013
    Адрес
    г. Киев
    Сообщений
    2,413
    Спасибо Благодарностей отдано 
    132
    Спасибо Благодарностей получено 
    759
    Поблагодарили
    353 сообщений
    Mentioned
    88 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Hunta Посмотреть сообщение
    Не 4 байта, а 32 бита, то есть, грубо - цикл, повторенный 32 раза
    Каких 32 раза? АЛУ у всех сделано на обычную арифметику, тот же 8080 или AVR складывает 4 байта, всего 4 цикла. И они же умеют 16-битные сложения - всего две операции, вместо минимум 3-х для BCD. А вот для BCD надо и флаг специальный чтобы ловить перенос между тетрадами, и перенос между байтами не особо. Умерло оно все, невыгодно ни по скорости, ни по плотности данных.

    Цитата Сообщение от Hunta Посмотреть сообщение
    CIS у нас вполне полноценный в этом плане - без всяких этих костылей в 8080
    Именно что костыли там, по-крайней мере, глядя на LSI-11 понятно как они могли BCD арифметику в микрокоде сделать. АЛУ LSI-11 тупо не умеет в десятичную арифметику, но там есть флажок межтетрадного переноса C4, вот на нем и играют. Если бы сделали обычную длинную арифметику - она была бы быстрее BCD.

Страница 5 из 15 ПерваяПервая 123456789 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Ответов: 0
    Последнее: 29.08.2017, 14:06
  2. Jet Set Willy: The Nightmare Edition
    от Rindex в разделе Игры
    Ответов: 0
    Последнее: 05.02.2016, 20:18
  3. Jet Set Luis
    от Rindex в разделе Игры
    Ответов: 1
    Последнее: 28.09.2015, 13:58
  4. 8bit space party, (live set)
    от siril в разделе События
    Ответов: 14
    Последнее: 30.07.2011, 11:46
  5. Jet Set Willy: The 2010 Megamix
    от Rindex в разделе Игры
    Ответов: 4
    Последнее: 30.12.2010, 19:39

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •