Три примера бизнес-гениальности Клайва Синклера

Тема в разделе "WASM.ARTICLES", создана пользователем aa_dav, 31 дек 2021.

  1. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    457
    Давно уже на канале SincLair появился выпуск посвящённый одному из калькуляторов ранней фирмы Клайва Синклера:

    ...и я заинтересовался и лениво поискал в этих наших интернетах о том с чего Sinclair Research начинала и довольно быстро меня поразило то насколько "китайской" была бизнес–стратегия Клайва Синклера которой он придерживался всю жизнь. Да, я читал и много раньше о том, что он любил дешево и сердито и собственно архитектура ZX Spectrum — наглядный тому пример. Но проникнувшись ниже изложенными разрозненными фактиками я восхитился тому насколько же "прожжённый" был этот жук. :)

    Вот здесь: http://zxnext.narod.ru/hist7275_1.htm, выложен отличный цикл статей про историю компании Sinclair Research (большая часть этой заметки берёт информацию из них), так что рекомендую к прочтению целиком. Там можно узнать такую пикантную деталь, что наладив контакты с американской Texas Instruments Синклер начал покупать у неё бракованные чипы интегральных усилителей SN76013. Бракованными они были потому что не выдерживали целевые токи, перегревались и перегорали. Фирма Синклера брала этот брак по дешевке, ставила на него массивный радиатор, исключая перегрев, и продавала в составе усилителя!
    [​IMG]

    Но вернёмся к калькуляторам — первый калькулятор Синклеа — Sinclair Executive произвёл своего рода фурор — для своего времени (1972 год) он был крайне малых размеров — всего лишь размером с ладонь или чековую книжку:
    [​IMG]

    И за этим стоит интересный момент. Главная и доминирующая над всей прочей схемотехникой микросхема в нём — Texas Instruments TMS1802 "калькулятор в чипе" (7 тысяч транзисторов).
    Этот чип в норме потреблял 350 милливатт и жрал батарейки как не в себя. Калькуляторы на его базе на рынке уже были и не один, но либо с огромным отсеком для батарей либо с блоком питания от сети.

    Однако инженер Sinclair Дэвид Парк обнаружил, что требования к питанию можно было снизить до 20 милливатт. Дело тут в том, что в той полупроводниковой технологии по которой был чип сделан пиковая мощность схемой потребляется во время поступления синхроимпульса и тем самым запуска перехода транзисторной логики в новое состояние. После "шага вычисления" токи "устаканиваются", выходят на постоянный уровень и он оказывается уже весьма небольшим. Так вот энергию в новом калькуляторе начали поставлять импульсами длительностью 1,7 микросекунд. Тактовый генератор работал с частотой 200 килогерц во время вычислений и 15 килогерц между операциями, что означало, что отключения энергии длились 3,3 микросекунды во время вычислений и до 65 микросекунд между ними. Устройство полагалось на ёмкость чипов чтобы сохранять информацию когда энергия не поступала и 1,7 микросекунды оказалось достаточно для чипа чтобы выполнить один переход состояния электронной схемы. Любое вычисление могло быть сделано за 1000 таких переходов. Это позволило увеличить срок жизни батареи до 20 часов непрерывного использования при использовании трёх крохотных батареек от слухового аппарата, что было эквивалентно четырём месяцам обычного использования (вообще в приборе было четыре таблеточных батарейки, т.к. необходимо было запитывать еще табло и т.п.).

    Как говорится, не родись электронным чипом при капитализме — и тебя загонят как раненую лошадь и заставят работать без питания. :lol:
    Это позволило миниатюризировать калькулятор сделав его для своего времени невероятно маленьким — легко помещающимся в карман и на рынке он произвёл фурор продаваясь по цене £79,95 без НДС при себестоимости в £10.
    А вот чтобы лучше понять следующий пример я обрисую ситуацию с самими чипами для калькуляторов. Как правило это были 4–битные чипы с десятичной арифметикой — один десятичный разряд соответствовал группе из четырёх бит и базовая арифметическая операция — сложение двух разрядов с учётом переноса из предыдущего был апогеем вычислительных способностей таких чипов. Чтобы реализовать сложение нужно было последовательно применить суммирование цифр разряд за разрядом. Чтобы реализовать умножение — в точности как мы умножаем столбиком повторять сложения со сдвигом над неким аккумулятором и так далее. Классические такие чипы как те же от Texas Instruments при этом имели память программы которая прошивалась на заводе при выпуске микросхемы под нужды заказчика — таким образом заказчик мог программно управлять числом разрядов в своём калькуляторе и возможно даже навешивать на него какие то дополнительные функции, например кнопку M+ или кнопки сразу подставляющие на табло избранные математические константы. Однако память программы была не бесконечна и добавить много новых функций было невозможно. Для более мощных вычислений, например тригонометрических, нужны были чипы помощнее, а вот с [+][–][*][/] справлялись самые базовые.
    И вот Клайв Синклер приезжает в США чтобы заказать в Texas Instruments чип для планируемого научного калькулятора — под научностью тут понимается наличие не только арифметических операций, но и тригонометрических и логарифмических функций. Однако по неизменной привычке он хочет сделать его крайне дешевым и интересуется — не влезет ли такой функционал в арифметический чип TMC0805?

    Инженеры Texas Instruments посмеиваясь ответили, что конечно же нет: в этом чипе было только три регистра, память инструкций в 320 шагов и отсутствовал механизм вызова подпрограмм. Его характеристик с запасом хватало для арифметических операций и парочки "фич", но научный калькулятор? Невозможно!

    Но там где у других было "невозможно" Синклер видел только возможность заработать. Работа закипела и за несколько дней в отеле со своим специалистом Найджелом Сиэлом они создали прошивку научного калькулятора на базе арифметического чипа и сдали её в заказ в Texas Instruments.

    [​IMG]

    По ссылке приведённой в начале этой статьи ключевые решения позволившие сделать невозможное обрисованы в общих чертах. Однако я нашёл подробнейший разбор подкапотных полётов на английском языке вот тут: http://files.righto.com/calculator/sinclair_scientific_simulator.html (там же в онлайн–эмуляторе можно попробовать как работает этот калькулятор на ощупь) и вкратце тут его перескажу.
    Нулевым, но не менее "изящным" чем остальные пунктом можно назвать отсутствие у калькулятора кнопок с математическими константами — места под них не было совсем, но зато некоторые из них были заботливо вынесены на лицевую панель калькулятора в качестве памятки, что прекрасно видно на фото.

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

    Во вторых не было никаких проверок на ошибки — если алгоритмы не справлялись, они просто выплёвывали мусор никак не сигнализируя об ошибке.
    Например арктангенс маленькой величины, например 0.0005, считался 1 минуту 48 секунд и выплёвывал неверное значение 0. На самом деле из–за особенностей алгоритма число в регистре испытывало переполнение и проворачивалось через 999.99955 и через 9999 итераций проваливалось в ветку выполнения другой функции.

    В третьих для большего упрощения алгоритмов пользователь обязан был вводить числа в нормализованной форме, т.е. невозможно было ввести число 450, надо было вводить число 4,5E02 (где E02 это форма записи "десять в степени два", что можно воспринимать как добавление двух нулей справа). Десятичная запятая в этом калькуляторе всегда прикреплена к своему месту сразу после первого разряда и пользователь вынужден был с этим мириться. Таким образом перед операциями числа сразу были нормализованы как и после операций и программа не тратила драгоценные операции на их приведение в "человекочитаемый вид".

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

    В обычном калькуляторе мы складываем числа нажимая кнопки [1] [+] [2] [=], но это требует от программы калькулятора запоминания на каком этапе ввода выражения мы находимся и Синклеру не подходило.

    В Sinclair Scientific же не было вообще кнопки [=]! Кнопки операций сразу совершали действие над теневым регистром и числом введённым на табло после чего помещали результат в теневой регистр и до нажатия следующей кнопки показывали его на дисплее. Так после сброса в теневой регистра записывался 0 и чтобы, например, разделить 8 на 4 мы должны были набрать:
    1) [8]
    2) [+] — при этом 8 сложится с 0 в теневом регистре и попадёт в него
    3) [4]
    4) и вот теперь нажать [/] — тут и произойдёт искомое деление.
    Т.е. промежуточное нажатие на [+] использовалось как разделитель чисел используя просто тот факт, что сумма числа с нулём — это само это число. На программируемых советских калькуляторах я видел что под действие разделения чисел была предназначена отдельная клавиша, а тут жмотство опять во главе угла! :lol:

    Ну и в пятых — калькулятор тупо не гнался за точностью. Ну т.е. вообще. Как метко написано в русской статье — соревновался в точности он скорее с логарифмическими линейками. Точность вычислений в 3–4 разряда после запятой на чём то сложнее арифметики была нормой, но в некоторых предельных случаях очень больших или маленьких чисел калькулятор и вовсе мог выдавать неверные результаты! Инженеров из Texas Instruments или Hewlett Packard инфаркт бы хватил от идеи, что калькулятор может неточно вычислять числа в своей разрядной сетке, поэтому их сознание и было зашорено "невозможно!", но для Синклера и это был не предел!
    Например для крайнего упрощения тригонометрии алгоритм поиска синуса сводился к последовательному применению поворота точки!

    Пусть S — это синус угла, а C — это его косинус. Тогда пользуясь формулой поворота комплексного числа (комплексное умножение есть поворот) можно выйти на тригонометрию вот так:
    C = C — S / 1000
    S = S + C / 1000
    Это формула поворачивающая С и S (как координаты точки на единичной окружности и по совместительству — тригонометрические функции) на 0.001 радиана. Повторяя её N раз в цикле, где N=радианы*1000 (напомню, что в калькуляторной десятичной арифметике умножение или деление на 1000 это просто сдвиг на 3 разряда) мы вычисляем нужные синусы и косинусы.
    Вуаля!
    И подобными же трюками Синклер и его инженер запихали еще и тангенсы и логарифмы до кучи в какую то жалкую (оставшуюся после реализации арифметики) сотню инструкций калькулятора который вообще не предназначался для чего либо сложнее арифметики!
    В результате, конечно, калькулятор реально мог задуматься на десяток секунд считая какие то предельные случаи, иногда глючил по точности даже хуже трёх знаков после запятой и вообще. Но, это был научный калькулятор за жалкие £49,95 (без НДС) (~$120)! Что в то время было конечно фантастическим предложением, учитывая что прямой конкурент из Hewlett Packard — HP35 стоил $375!
    Поэтому нужно ли удивляться, что ZX Spectrum оказался тем ПК который завоевал сердца и умы миллионов оказавшись в экстремальной позиции на шкале "цена/качество"?
     
  2. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Поковырял эмулятор чудо-юдо калькуляхтора. Думаю у нас бы такой калькулятор не прошёл бы ГОСТ. Да, и у нас самые первые калькуляторы работали не слишком привычно и странновато. Но у них как правило был малый тираж, в общем отмерли довольно быстро. Хотя когда разрабатывались ПМК типа Б3-34 могли бы сделать побыстрей, для этого пришлось отказаться от развитии К145ИК5 в К145ИК13, и развивать К1814ВЕ1 клон TMS1200, либо создать нечто подобное, например RISC 4х битный с 8-битными командами. Но решили так сойдёт, в результате наши ПМК получились медленными. Хотя возможно можно было и К145ИК13 сделать быстрым, переделав немного архитектуру.
     
  3. q2e74

    q2e74 Active Member

    Публикаций:
    0
    Регистрация:
    18 окт 2018
    Сообщения:
    999
    в СССР был 5Э53 .
     
    Последнее редактирование модератором: 20 фев 2022
  4. Intro

    Intro Active Member

    Публикаций:
    0
    Регистрация:
    29 авг 2009
    Сообщения:
    600
    Ну это военный машин. Тут о гражданских изделиях.
    Используется TMS0803 пока точно с ним не разобрался, но он близок к К145ИК2/К145ИК5(кольцо М разомкнуто) по возможности, один ИК2/ИК5 используется в обычных калькуляторах, пара ИК5 может использовать в инженерных, а три используется в Б3-21, в первом ПМК. Так что поначалу СССР не уступал западу, в том числе чисто по своим разработкам, не копиям. Но потом начали мучить последовательную архитектуру и стали уступать по быстродействию. Можно сказать, для внутреннего использования и так сойдёт, нет, делали на экспорт, так что надо было конкурировать.
     
    Последнее редактирование модератором: 20 фев 2022
  5. aa_dav

    aa_dav Active Member

    Публикаций:
    0
    Регистрация:
    24 дек 2008
    Сообщения:
    457
    Так это вообще большая ЭВМ несколько комнат занимающая. Калькуляторов в СССР было десятки видов и это другая песня.

    Немного почитал тут http://files.righto.com/calculator/TI_calculator_simulator.html и (по ссылке оттуда) тут https://patentimages.storage.googleapis.com/0d/b2/87/7f219f38ca9899/US3934233.pdf
    Довольно забавный тоже зверь. Набросаю заготовку для следующей статьи что ли...

    Три 11-разрядных BCD регистра A, B , C (т.е. 44-битных), два 11-битных регистра "флагов" AF, BF и один бит флага условия по которому осуществляются. Бит условия означает то переполнение то ноль в зависимости от использованной инструкции.
    Инструкции 11-битные. В базисе верхние 2 бита означают класс инструкции, следующие 5 код инструкции и самые нижние 5 - маску/константу. Но эта схема изрядно "поломана" условными переходами и операциями с флагами, что отражено на картинке ниже:
    [​IMG]
    Забавным следствием является то, что инструкция перехода тестирующая отсутствия нажатия клавиш может переходить только по адресам 0-127, а инструкция тестирующая наличие нажатия клавиш только по адресам 128-255. Полный же адрес перехода составляет девять бит, т.е. теоретически адресное пространство - 512 слов в ПЗУ, но аппаратно реализованы только 320 ячеек.
    При этом первая экзотичность - безусловных переходов совсем нет и они имитируются через условные со знанием чему равен бит флага (классы 00 и 01).
    Арифметические инструкции (класс 11) выглядят примерно так:
    AABA mask ; сложить A с B и результат поместить в A
    SCBC mask ; вычесть из C B и результат поместить в C
    ACKB konst; сложить C с K (константой) и результат поместить в B
    Далеко не все возможные комбинации охвачены, т.е. есть несимметричность того что с чем можно сложить/вычесть и куда попадёт результат.
    Вторая эзотеричность - это аргумент маски/константы (нижние 5 бит инструкции).
    Шестнадцать возможных комбинаций описаны в патенте на следующей картинке: https://patentimages.storage.googleapis.com/pages/US3934233-33.png Скан большой, поэтому в пост не внедряю.
    Суть такова, что можно управлять какие именно разряды регистров будут участвовать в операции. Так можно разграничивать экспоненту от мантиссы. В схеме TI экспонента хранится в нижних двух разрядах, а остальное занимает мантисса. Кроме того когда в инструкции участвует константа (K) есть прошитые варианты когда в некоторых разрядах появляются 1, 4 или 7. Видимо чтобы инкрементировать и проводить какие то BCD-коррекции.

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

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