Обновить
8K+
75
Artem (tёmix) Solopiy@EntityFX

Iot Solutions Developer

12
Рейтинг
59
Подписчики
Отправить сообщение

Получается, в шкафу было 2 куба (4К слов в каждом), в итоге было минимум 4 шкафа МОЗУ. В максимальной комплектации 16 шкафов.

Ага, получается несколько вариантов кодирования было. Надо будет это в статью добавить подробнее.

Вот вариант, колнчатый:

  • колонки 1–5 — метка оператора;

  • колонка 6 — признак продолжения (если оператор не помещается на одной карте);

  • колонки 7–72 — поле оператора (основной текст);

  • колонки 73–80 — комментарий (не влияет на трансляцию).

    Непосредственно перфокарта, у меня один экземпляр такой имеется
    Непосредственно перфокарта, у меня один экземпляр такой имеется

Например, Выражение на Fortran: A=B+3

Было так (https://sergev.org/besm/upp-ibm)

         00000000 01111111 11122222 22222333 33333334 44444444 45555555 55566666 66666777 77777778
         12345678 90123456 78901234 56789012 34567890 12345678 90123456 78901234 56789012 34567890
         ─────────────────────────────────────────────────────────────────────────────────────────
Ряд 12   ······●· ●●······ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 11   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд  0   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд  1   ······●· ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд  2   ········ ●······· ········ ········ ········ ········ ········ ········ ········ ········
Ряд  3   ········ ··●····· ········ ········ ········ ········ ········ ········ ········ ········
Ряд  4   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд  5   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд  6   ·······● ·●······ ········ ········ ········ ········ ········ ········ ········ ········
Ряд  7   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд  8   ·······● ·●······ ········ ········ ········ ········ ········ ········ ········ ········
Ряд  9   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
         ─────────────────────────────────────────────────────────────────────────────────────────
Текст    ······A= B+3····· ········ ········ ········ ········ ········ ········ ········ ········
● — отверстие; · — нет отверстия.

А было ещё и так (https://www.mailcom.com/besm6/encoding.html)

         00000000 01111111 11122222 22222333 33333334 44444444 45555555 55566666 66666777 77777778
         12345678 90123456 78901234 56789012 34567890 12345678 90123456 78901234 56789012 34567890
         ─────────────────────────────────────────────────────────────────────────────────────────
Ряд 01   ●···●●●● ●···●●●● ●···●●●● ●···●●●● ●···●●●● ●···●●●● ··●····· ···●·●·● ●·●···●· ●···●·●·
Ряд 02   ●·····●● ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 03   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 04   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 05   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 06   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 07   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 08   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 09   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 10   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 11   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
Ряд 12   ········ ········ ········ ········ ········ ········ ········ ········ ········ ········
         ─────────────────────────────────────────────────────────────────────────────────────────
Текст    ······A= B+3····· ········ ········ ········ ········ ········ ········ ········ ········
● — отверстие; · — нет отверстия.

В итоге, 8 кубов по 50/52 рамки, в рамке 4096 колец (16 субматриц рамером в 16 на 16), как на фото.

Да, здесь читал про различные конструкции ферритовых рамок и кубов, статья мощная: https://habr.com/ru/companies/ruvds/articles/646963/

Символы GOST (АЦПУ-128)

| Восьм. код | Символ | Восьм. код | Символ | Восьм. код | Символ |
| --- | --- | --- | --- | --- | --- |
| 000 | 0 | 040 | А | 100 | F |
| 001 | 1 | 041 | Б | 101 | G |
| 002 | 2 | 042 | В | 102 | I |
| 003 | 3 | 043 | Г | 103 | J |
| 004 | 4 | 044 | Д | 104 | L |
| 005 | 5 | 045 | Е | 105 | N |
| 006 | 6 | 046 | Ж | 106 | Q |
| 007 | 7 | 047 | З | 107 | R |
| 010 | 8 | 050 | И | 110 | S |
| 011 | 9 | 051 | Й | 111 | U |
| 012 | + | 052 | К | 112 | V |
| 013 | − | 053 | Л | 113 | W |
| 014 | / | 054 | М | 114 | Z |
| 015 | , | 055 | Н | 115 | — |
| 016 | . | 056 | О | 116 | ≤ |
| 017 | пробел | 057 | П | 117 | ≥ |
| 020 | ${}^{10}$ | 060 | Р | 120 | ∨ |
| 021 | ↑ | 061 | С | 121 | ∧ |
| 022 | ( | 062 | Т | 122 | ⊃ |
| 023 | ) | 063 | У | 123 | ¬ |
| 024 | × | 064 | Ф | 124 | ÷ |
| 025 | = | 065 | Х | 125 | ≡ |
| 026 | ; | 066 | Ц | 126 | % |
| 027 | [ | 067 | Ч | 127 | ◇ |
| 030 | ] | 070 | Ш | 130 | | |
| 031 | \* | 071 | Щ | 131 | ¯ |
| 032 | ‘ | 072 | Ы | 132 | _ |
| 033 | ’ | 073 | Ь | 133 | ! |
| 034 | ≠ | 074 | Э | 134 | " |
| 035 | < | 075 | Ю | 135 | Ъ |
| 036 | > | 076 | Я | 136 | ° |
| 037 | : | 077 | D | 137 | ’ |

Говорят, что одинаковые, вот кто бы показал различия...

Здорво! А что там по железу, возможно адаптировать Эльбрус, Байкал и насколько вычислительная сложность необходима для такого класса устройств? Здорво! А что там по железу, возможно адаптировать Эльбрус, Байкал и насколько вычислительная сложность необходима для

А что там по вычислительной части? Процессоры, GPU, ускорители и т.д.

Тут обсудить можно, если есть возможность: https://t.me/setun_1958

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

EBNF-грамматика
(* ============================================================
   Полная EBNF-грамматика языка T
   ============================================================ *)

(* --- Лексическая структура --- *)
trit_digit         = "-" | "0" | "+" .

identifier         = ( letter | "_" ) { letter | digit | "_" } .
letter             = latin_letter | cyrillic_letter .
latin_letter       = "A".."Z" | "a".."z" .
cyrillic_letter    = "А".."Я" | "а".."я" | "Ё" | "ё" .
digit              = "0".."9" .

decimal_suffix     = "t" | "tl" | "tll" .
decimal_literal    = [ "+" | "-" ] digit { digit } decimal_suffix .
balanced_prefix    = "0t" .
balanced_digits    = trit_digit { trit_digit } [ "_" trit_digit ] .
balanced_literal   = balanced_prefix balanced_digits .
tryx_prefix        = "0y" .
tryx_digit         = digit | "A".."Q" | "a".."q" .
tryx_literal       = tryx_prefix tryx_digit { tryx_digit } .
integer_literal    = decimal_literal | balanced_literal | tryx_literal .

float_suffix       = "f" | "d" .
decimal_float      = [ "+" | "-" ] digit { digit } "." digit { digit }
                     [ "e" [ "+" | "-" ] digit { digit } ] [ float_suffix ] .
balanced_float     = balanced_prefix mantissa_part "e" exponent_part float_suffix .
mantissa_part      = trit_digit { trit_digit } [ "_" trit_digit ]
                     "." trit_digit { trit_digit } .
exponent_part      = trit_digit { trit_digit } .
float_literal      = decimal_float | balanced_float .

char_literal       = "'" ( trit_digit | any_character ) "'" .
string_literal     = '"' { any_character } '"' .

true_const         = "true" | "истина" .
false_const        = "false" | "ложь" .
maybe_const        = "maybe" | "может" .
constant           = integer_literal | float_literal | char_literal
                   | string_literal | true_const | false_const | maybe_const .

(* --- Выражения --- *)
primary_expr       = identifier | constant | "(" expression ")" .
postfix_expr       = primary_expr
                   | postfix_expr "[" expression "]"
                   | postfix_expr "(" [ argument_list ] ")"
                   | postfix_expr "." identifier
                   | postfix_expr "->" identifier
                   | postfix_expr "++"
                   | postfix_expr "--" .
argument_list      = expression { "," expression } .

unary_expr         = postfix_expr
                   | "++" unary_expr
                   | "--" unary_expr
                   | unary_operator unary_expr .
unary_operator     = "+" | "-" | "!" | "~" | "*" | "&"
                   | "sizeof" | "размер" .

multiplicative_expr = unary_expr { ( "*" | "/" | "%" ) unary_expr } .
additive_expr      = multiplicative_expr { ( "+" | "-" ) multiplicative_expr } .
shift_expr         = additive_expr { ( "<<" | ">>" ) additive_expr } .
relational_expr    = shift_expr { ( "<" | ">" | "<=" | ">=" ) shift_expr } .
equality_expr      = relational_expr { ( "==" | "!=" ) relational_expr } .

bitwise_and_expr   = equality_expr { "&" equality_expr } .
bitwise_xor_expr   = bitwise_and_expr { "^" bitwise_and_expr } .
bitwise_or_expr    = bitwise_xor_expr { "|" bitwise_xor_expr } .
logical_and_expr   = bitwise_or_expr { "&&" bitwise_or_expr } .
logical_or_expr    = logical_and_expr { "||" logical_and_expr } .

ternary_expr       = logical_or_expr
                     "??" expression ":?" expression ":!" expression .
assignment_expr    = ternary_expr
                   | unary_expr assignment_operator assignment_expr .
assignment_operator = "=" | "+=" | "-=" | "*=" | "/=" | "%="
                     | "<<=" | ">>=" | "&=" | "|=" | "^=" .
expression         = assignment_expr .

(* --- Объявления --- *)
void_type          = "void" | "пусто" .
tint_type          = "tint" | "тинт" .
tlong_type         = "tlong" | "тлонг" .
tlong_long_type    = "tlong" "long" | "тлонглонг" .
tryte_type         = "tryte" | "трайт" .
trit_type          = "trit" | "трит" .
tril_type          = "tril" | "трил" .
tfloat_type        = "tfloat" | "твещ" .
tdouble_type       = "tdouble" | "тдвойн" .
signed_spec        = "signed" | "знак" .
unsigned_spec      = "unsigned" | "беззнак" .

type_specifier     = void_type | tint_type | tlong_type | tlong_long_type
                   | tryte_type | trit_type | tril_type
                   | tfloat_type | tdouble_type
                   | signed_spec | unsigned_spec
                   | struct_or_union_specifier | enum_specifier
                   | typedef_name .

struct_or_union    = "struct" | "структура" | "union" | "объединение" .
struct_or_union_specifier = struct_or_union [ identifier ] "{" { struct_declaration } "}"
                         | struct_or_union identifier .
struct_declaration = type_specifier struct_declarator_list ";" .
struct_declarator_list = struct_declarator { "," struct_declarator } .
struct_declarator  = declarator | [ declarator ] ":" expression .

enum_kw            = "enum" | "перечисление" .
enum_specifier     = enum_kw [ identifier ] "{" enumerator_list "}"
                   | enum_kw identifier .
enumerator_list    = enumerator { "," enumerator } .
enumerator         = identifier [ "=" expression ] .

type_qualifier     = "const" | "конст" | "volatile" | "изменч" .

declaration_specifiers = ( type_specifier | type_qualifier )
                         { type_specifier | type_qualifier } .
declarator         = pointer_decl direct_declarator | direct_declarator .
direct_declarator  = identifier
                   | "(" declarator ")"
                   | direct_declarator "[" [ expression ] "]"
                   | direct_declarator "(" parameter_list ")"
                   | direct_declarator "(" ")" .
pointer_decl       = "*" [ type_qualifier { type_qualifier } ] [ pointer_decl ] .
parameter_list     = parameter_declaration { "," parameter_declaration } .
parameter_declaration = declaration_specifiers [ declarator | abstract_declarator ] .
abstract_declarator = pointer_decl [ direct_abstract_declarator ]
                    | direct_abstract_declarator .
direct_abstract_declarator = "(" abstract_declarator ")"
                           | "[" [ expression ] "]"
                           | "(" [ parameter_list ] ")" .
initializer        = expression | "{" initializer_list [ "," ] "}" .
initializer_list   = initializer { "," initializer } .
declaration        = declaration_specifiers [ init_declarator_list ] ";" .
init_declarator_list = init_declarator { "," init_declarator } .
init_declarator    = declarator [ "=" initializer ] .

(* --- Операторы --- *)
if_kw              = "if" | "если" .
maybe_kw           = "maybe" | "может" .
else_kw            = "else" | "иначе" .
switch_kw          = "switch" | "выбор" .
case_kw            = "case" | "случай" .
default_kw         = "default" | "умолчание" .
while_kw           = "while" | "пока" .
do_kw              = "do" | "делать" .
for_kw             = "for" | "для" .
continue_kw        = "continue" | "продолжить" .
break_kw           = "break" | "прервать" .
return_kw          = "return" | "возврат" .
goto_kw            = "goto" | "перейти" .

statement          = expression_statement
                   | compound_statement
                   | selection_statement
                   | switch_statement
                   | labeled_statement
                   | iteration_statement
                   | jump_statement .
expression_statement = [ expression ] ";" .
compound_statement   = "{" { declaration | statement } "}" .
selection_statement  = if_kw "(" expression ")" statement
                       ( [ maybe_kw statement ] [ else_kw statement ]
                       | [ else_kw statement ] [ maybe_kw statement ] ) .
switch_statement     = switch_kw "(" expression ")" statement .
case_label           = case_kw expression ":" .
default_label        = default_kw ":" .
labeled_statement    = case_label statement | default_label statement .
iteration_statement  = while_kw "(" expression ")" statement
                     | do_kw statement while_kw "(" expression ")" ";"
                     | for_kw "(" [ expression ] ";" [ expression ] ";"
                               [ expression ] ")" statement .
jump_statement       = continue_kw ";"
                     | break_kw ";"
                     | return_kw [ expression ] ";"
                     | goto_kw identifier ";" .

(* --- Внешние определения --- *)
extern_kw          = "extern" | "внеш" .
static_kw          = "static" | "статич" .
auto_kw            = "auto" | "авто" .
register_kw        = "register" | "регистр" .
inline_kw          = "inline" | "встроен" .
typedef_kw         = "typedef" | "типрег" .

translation_unit   = { external_definition } .
external_definition = function_definition | declaration .
function_definition  = declaration_specifiers declarator
                      [ declaration_list ] compound_statement .
declaration_list    = { declaration } .

Хотелось бы разбор конкретных решений в виде кода и как оно оптимизировалось, сравнение с amd64 архитектурой. Видео с разбором от сотрудницков МЦСТ интересное.

Ну и не хватает .Net (dotnet 6, mono), которые так же есть под Эльбрус.

Ну и да, добавьте в сравнение что-то arm-подобное и x86-64 (amd64), так будет нагляднее.

Что-то подобное я делал: https://habr.com/ru/companies/icl_group/articles/558564/
Самое главное, указать надо с какими флагами собирали и запускали, какие настройки сред. На Эльбрусе это прямо сильно влияет. Удивительно, что шланг (там тоже Эльбрусный бэк под капотом) быстрее родного компилятора оказался. Гошка какая: gccgo или Гугловая -- родная?

Энтузиасты активно пользуются, студентам об этом вещаем.

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

Пожалуйста, исправьте таблицы.

1
23 ...

Информация

В рейтинге
522-й
Откуда
Казань, Татарстан, Россия
Работает в
Дата рождения
Зарегистрирован
Активность

Специализация

Фулстек разработчик, IoT
Старший
C#
.NET Core
.NET
SQL
Linux
Docker
JavaScript
Проектирование архитектуры приложений