Dec. 18th, 2020

spamsink: (Default)
[personal profile] spamsink
С программами пользователя мы разберёмся, благо система команд и подавляющее большинство системных вызовов описаны в литературе, а вот как была сделана работа с внешними устройствами, не входящими в первоначальную конфигурацию, и детали реализации ОС, кроме С. А., уже мало кто помнит.

Ситуация: я запустил задачу переписи с одного диска на другой (с 4095 на устройстве 05 на 2054 на устройстве 41).
                                           С О С Т О Я Н И Е     Д И С К О В О Д О В
                                НУ ТОМ  ТИП  СТАТУС   ЧЗ        НУ ТОМ  ТИП  СТАТУС   ЧЗ
                                00 2048 ОБЩ СВОБОДЕН  -+        40 2052 СИС ЗАНЯТ     ++
                                01 2148 ОБЩ СВОБОДЕН  --        41 2054 ОБЩ В РЕШЕНИИ --
                                02 2248 ИНД СВОБОДЕН  --        42 2091 ОБЩ СВОБОДЕН  --
                                03 2113 ОБЩ СВОБОДЕН  --        43
                                04 2345 ИНД СВОБОДЕН  --        44
                                05 4095 ИНД В РЕШЕНИИ --        45
                                06                              46
                                07 2053 СИС В РЕШЕНИИ ++        47

Но задача зависла на обмене с диском:
ВЦПП
      419900000000 52    00.00.00 00.02.40  1 070 MД 75-0000:


В первую очередь неправильный номер устройства (75), потому что интерфейс контроллера дисков в эмуляторе реализован не до конца - мы не знаем, как было сделано обращение к линейкам дисков, т. е. к нескольким группам из 8 дисков, подключенных к одному контроллеру.
Теоретически к системе можно было подключить вплоть до 64 дисков, по 32 (4 линейки по 8) к каждому контроллеру (обозначаемых как от 00 до 37 восьмеричных к одному, и от 40 до 77 - к другому). Если изменить конфигурацию ОС, задав УКВП Л0:0-7,Л1:0-7,...,Л7:0-7 - это можно увидеть, но все линейки, кроме 0 и 4, будут свободны.

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

Наиболее общо вопрос формулируется так: как было сделано переключение между линейками дисков?
spamsink: (Default)
[personal profile] spamsink
Когда в самом начале эксплуатации БЭСМ-6 программировали в машинных кодах, ради экономии памяти и труда программистов элементарные функции реализовали с помощью зарезервированных эмулируемых кодов операций : 050 - sqrt, 051 - sin, 052 - cos и т. д., по которым ЦП переключается в режим супервизора и передает управление по физическому адресу 0500+код операции. Казалось бы, много ли надо, чтобы посчитать простенький полином, сделать пару итераций по Ньютону и скорректировать порядок результата? Много было не надо (цитата из ядра системы):
*ВЫЧИСЛЕНИЕ SQRТ(Х)
*СРЕДНЕЕ ВРЕМЯ СЧЕТА=70МКСЕК.
*МАКС.ОТН.ПОГР.=1.5Е-12
*КОРЕНЬ ИЗВЛЕКАЕТСЯ ТОЧНО ИЗ ВСЕХ
*Х=N**2,ГДЕ 1 ≤ N ≤ 2**20

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

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

На самом деле, немного - для этого было бы достаточно ровно одной команды; Но всем было пофиг, раз всю жизнь ОС Диспак при вызове экстракода квадратного корня выполнял три дюжины команд, которых можно было с лёгкостью избежать.

трасса )
То есть реально вычисление квадратного корня работало не обещанные 70 μs, а раза в полтора дольше.

Предлагается задачка: оценить, сколько всего операций квадратного корня все БЭСМ-6 произвели за все годы эксплуатации, и сколько машинного времени было потеряно. :)

Profile

Сообщество любителей БЭСМ-6

December 2025

S M T W T F S
 123456
78910111213
14151617181920
21222324252627
282930 31   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 15th, 2026 08:54 am
Powered by Dreamwidth Studios