Электробусы и их батареи: что такое литий-титанат? (Part.1)

фото c сайта www.zr.ru

Друзья здравствуйте, всем здоровья, берегите себя, антисептики — наше ВСЁ!

Сегодня попробуем рассмотреть московские электробусы по мотивам статьи в журнале «За рулем» в части используемых литий-титанатных батарей (Li4Ti5O12 или LTO), их стоимости и перспектив эксплуатации, также попробуем разобраться, почему литий-титанат не подходит для промышленных решений в ИБП.

После нашей статьи «Li-Ion технологии: удельная стоимость снижается быстрее прогнозов» вызвал интерес литий-титанат как «не автомобильный» литий. На мой взгляд LTO как раз и является самым что ни на есть тяговыми батареями, которые совершенно не подходят для работы в качестве аккумуляторных батарей в ИБП и телекоме. Почему? Давайте разберемся под катом, структуру статьи условно разделим на три части:

  1. Что такое электробус и почему LTO?
  2. Химия-химия…., все батарейки одинаковые? В чем отличие LTO, LpTO и LFP
  3. Стоимость литий-ионных решений на данном этапе: мировые данные и примерные коэффициенты на рынке РФ

Что такое электробус и почему LTO?

Для начала разберемся в статье и «выудим» нужные нам данные

  • используемые LTO-батареи, точнее АКБ+BMS производства китайской Microvast,INC Однако ВИКИ утверждает, что в Китае лишь завод по производству батарей, головная компания — Хьюстон, штат Техас, USA
  • Электробусы поставляют КАМАЗ и ЛИАЗ, кузова разные, но силовая установка одна и та же
  • декларируется 7 лет работы или 15 тысяч циклов, однако в буклете производителя указано витиевато «более 12 тысяч циклов». А вот вышеупомянутый ВИКИ утверждает, что количество циклов для этого типа батарей-от 2 до 7 тысяч циклов. Разберемся ниже по тексту, однако скажу, что в научных статьях именно для Microvast указывают лишь >2000 циклов для LpTO
  • Вот тут не состыковка с буклетом китайцев, они утверждают, что начало эксплуатации электробусов в Китае — 2011 год, то есть в прошлом году уже прошло 9 лет, вопрос где статистика?

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

  • Стоимость энергетической установки — 9,5 млн. рублей (удорожание электробуса, запомним пока цифру)
  • Масса батарей на крыше автобуса — 1,8-2 тонны (тут тоже не стыковка, снаряженная масса для электробуса — это и электродвигатели, и обвязка, и контроллеры батарей, и конечно сами батареи)
  • Емкость батареи — 77кВт*ч, однако сам производитель пишет о 60/80кВт*ч

Под спойлером можно посмотреть из чего состоит батарея электробуса и откуда взялись исходные данные

Поскольку ходовая и кузов классического автобуса полностью идентична электробусу, примем массу ДВС равной массе электромоторов и инвертеров привода электробуса, тогда получим «добавленную» массу электробуса равной массе АКБ, кабелей, несущей конструкции на крыше. То есть примем массу накопителя электробуса равной 1800 кг.
Теперь заглянем к производителю батарей. Получается, что в электробусе мы имеем две батареи для каждого электродвигателя заднего моста. Этот факт подтверждается картинкой — моделью автобуса, где видно две батареи на крыше. То есть имеем 2*77кВт*ч батареи, каждая по 800 кг.

Таким образом на основе статьи имеем:

  1. Удельная масса батарей — 10,3 кВт*ч/кг массы батарей (pack)
  2. Удельная стоимость батарей (за вычетом 1/3 зарядной станции -55,2 т.рублей/ Вт*ч/кг (pack)
  3. Кузов автобуса рассчитан производителем на 12 лет эксплуатации, расчетная замена батарей — через 7 лет за счет города, учитывая невысокий (предположительно) уровень службы эксплуатации Мосгортранс и желание «побыстрее» зарядить батарею в ущерб сроку службы батарей — получаем средний цикл эксплуатации батареи — порядка 7 тысяч циклов. Если брать по 10 циклов в день — то срок службы батарей электробуса вряд ли превысит 3 года или 10,5 тысяч циклов (2 года гарантии — предполагаю — плюс год послегарантийного обслуживания)


фото c сайта www.zr.ru

… на этом пока все, продолжение следует.

UPD: С чего начнём следующую — химическую — часть:

Внешний вид LpTO батарейной сборки от Microvast, Китай. Возможно, именно они установлены на электробусах в Москве.

ссылка на оригинал статьи https://habr.com/ru/post/494374/

Шпаргалка по Smali на русском

Русская шпаргалка по Smali

Приветствую, любители реверс-инжинирить Android. Перед вами шпаргалка по Smali — аналогу ассемблера для Android-приложений.

Изначальный текст на русском взят отсюда. Там текст появился из машинного перевода официальной документации.

В итоге, оформил сухой текст + поправил небольшие опечатки и корявости перевода. По поводу замечаний и предложений можете писать либо мне в ЛС, либо оформлять PR на Gist.

Общая информация

Виды(Types)

Байт-код Dalvik имеет два основных класса типов: примитивные типы и ссылочные типы. Типы ссылок — это объекты и массивы, все остальное является примитивным.

Примитивы представлены одной буквой:

V - Void - может использоваться только для типов возврата Z - Boolean (логический) B - Byte (байт) S - Short (короткий) C - Char I - Integer (Целое число) J - Long (64 bits) (Длинный) F - Float (плавающий) D - Double (64 bits) (Двойной )

Объекты принимают форму Lpackage/name/ObjectName; — где ведущий L указывает, что это тип объекта, package/name/ — это пакет, в котором находится объект, ObjectName — это имя объекта и ; обозначает конец имени объекта.

Это эквивалентно имени package.name.ObjectName в java. Или, для более конкретного примера, Ljava/lang/String; эквивалентно java.lang.String

Массивы принимают форму [I — это массив целых чисел с одним измерением. т.е. int[] в Java. Для массивов с несколькими измерениями вы просто добавляете больше [ символов. [[I = int[][], [[[I = int[][][] и т.д. (Примечание: максимальное количество измерений, которое вы можете иметь, составляет 255).

Вы также можете иметь массивы объектов, [Ljava/lang/String; будет массив строк.

Методы(Methods)

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

Они принимают форму Lpackage/name/ObjectName;->MethodName(III)Z

В этом примере вы должны распознать Lpackage/name/ObjectName; как тип. MethodName — это имя метода. (III)Z является сигнатурой метода. III — параметры (в данном случае 3 целых числа), а Z — тип возврата (bool).

Параметры метода перечислены один за другим, без разделителей между ними.

Вот более сложный пример:

Lpackage/name/ObjectName;->MethodName(I[[IILjava/lang/String;[Ljava/lang/Object;)Ljava/lang/String;

В Java, это было бы

String MethodName(int, int[][], int, String, Object[])

Поля(Fields)

Поля также всегда указывается в многословной форме, которая включает тип, содержащее поле, имя поля и тип поля. Опять же, это позволяет виртуальной машине находить правильное поле, а также выполнять статический анализ на байт-коде.
Они принимают форму Lpackage/name/ObjectName;->FieldName:Ljava/lang/String;
Это должно быть довольно очевидно — это пакет и имя объекта, имя поля и тип поля соответственно

Регистры (Register)

Вступление

В байт-коделе dalvik регистры всегда 32 битные и могут содержать любой тип значения. 2 регистра используются для хранения 64-битных типов (длинного — Long и числа с плавающей точкой — Double).

Указание количества регистров в методе

Существует два способа указать, сколько регистров доступно в методе:
Директива .registers указует общее количество регистров в методе, в то время как альтернативное .locals директива определяет число регистров без параметров в методе. Общее количество регистров будет также включать в себя, однако многие регистры необходимы для хранения параметров метода.

Как параметры метода передаются в метод:

Когда метод вызывается, параметры метода помещаются в последние n регистров. Если метод имеет 2 аргумента и 5 регистров (v0-v4), аргументы будут помещены в последние 2 регистра — v3 и v4.

Первым параметром для нестатических методов (non-static methods) всегда является объект, на который вызывается метод (this объект)

Например, допустим, вы пишете нестатический метод LMyObject;->callMe(II)V. Этот метод имеет 2 целочисленных (integer) параметра, но также имеет неявный LMyObject; параметр перед обоими целыми параметрами, поэтому для метода существует всего 3 аргумента.

Предположим, вы указали, что в методе (v0-v4) есть 5 регистров, либо с директивой .registers 5, либо с директивой .locals 2 (т.е. 2 local registers + 3 parameter registers). Когда метод вызывается, объект, к которому выполняется метод (т.е. this ссылка), будет в v2, первый целочисленный (integer) параметр будет в v3, а второй целочисленный (integer) параметр будет в v4.

Для статических методов (static methods) это одно и то же, за исключением того, что неявный этот аргумент.

Регистрация имен (Register names)

Существует две схемы именования для регистров — обычная схема именования v# и схема именования p# для регистров параметров. Первый регистр в схеме именования p# является первым регистром параметров в методе.

Итак, вернемся к предыдущему примеру метода с 3-мя аргументами и 5-ю полными регистрами. В следующей таблице показано обычное имя v# для каждого регистра, за которым следует имя p# для регистров параметров (parameter registers)

v# p#
v0 Первый локальный регистр
v1 Второй локальный регистр
v2 p0 Первый регистр параметров
v3 p1 Второй регистр параметров
v4 p2 Третий регистр параметров

Вы можете ссылаться на регистры параметров по имени — это не имеет никакого значения.

Введения регистров параметров (parameter registers)

p# схема именования была введена в качестве практического вопроса
Скажем, у вас есть существующий метод с несколькими параметрами, и вы добавляете некоторый код в этот метод, и вы обнаружите, что вам нужен дополнительный регистр. Вы думаете: «Ничего страшного, я просто увеличу количество регистров, указанных в директиве .registers!».

К сожалению, это не так просто. Имейте в виду, что параметры метода хранятся в последних регистрах в методе. Если вы увеличиваете количество регистров — вы меняете, какие регистры вводят аргументы метода. Поэтому вам придется изменить директиву .registers и перенумеровать каждый регистр параметров.

Но если схема именования p# использовалась для ссылки на регистры параметров во всем методе, вы можете легко изменить количество регистров в методе, не беспокоясь о перонумеровании любых существующих регистров.

Long/Double значения

Как упоминалось ранее, long и double примитивы (J и D соответственно) имеют 64-битные значения и требуют 2 регистра. Это важно иметь в виду, когда вы ссылаетесь на аргументы метода. Например, предположим, что у вас есть (нестатический — non-static) метод LMyObject;->MyMethod(IJZ)V. Параметрами метода являются LMyObject;,int,long,bool. Таким образом, для всех его параметров потребуется 5 регистров:

p0 this p1 I p2, p3 J p4 Z

Кроме того, когда вы вызываете метод позже, вам нужно указать оба регистра для любых аргументов с двойным расширением в списке регистров для инструкции типа invoke.

Array (массивы)

array-length vA, vB

  • A: Регистр назначения (4 бита)
  • B: Массив reference-bearing регистр (4 бит)

Сохраняет длину (количество записей) указанного массива vB в vA

fill-array-data vA+, :target

  • A: Регистрация пары (pair), содержащей ссылку на массив
  • B: Целевая метка, определяющая таблицу данных массива

Заполняет заданный массив vA+ указанными данными в цели (target). Ссылка должна быть в массиве примитивов, и таблица данных должна соответствовать ей по типу и размеру. Ширина массива определяется в таблице.
Регистровые пары занимают vX и vX+1. например, v1, v2.

Пример таблицы данных:

:target .array-data 0x2 0x01 0x02 0x03 0x04 .end array-data

new-array vA+, vB, Lclass;->type

  • A: Регистр назначения (8 бит)
  • B: Регистр размеров
  • C: Ссылка на тип

Создает новый массив указанного типа и размера. Тип должен быть типом массива.

filled-new-array { vA [ vB, v.., vX ]}, Lclass;->type

  • vA-vX: Регистры аргументов (по 4 бита)
  • B: Ссылка на тип

Создает новый массив указанного типа и размера. Тип должен быть типом массива. Ссылка на вновь сгенерированный массив может быть получена командой move-result-object, непосредственно после команды fill-new-array.

filled-new-array/range { vA .. vX }, Lclass;->type

  • vA .. vX: Диапазон регистров, содержащих параметры массива (по 4 бита)
  • B: Ссылка на тип (16 бит)

Создает новый массив указанного типа. Тип должен быть типом массива. Ссылка на вновь созданный массив может быть получена командой move-result-object, непосредственно после команды fill-new-array/range.

Array Accessors (приемники массивов)

Легенда:

  • A(aget): Регистр назначения
  • A(aput): Исходный регистр
  • B: Ссылка на массив
  • C: Индекс в массиве

aget vA, vB, vC

Получает целое (integer) значение с индексом vC из массива, на который ссылается vB, и сохраняет в vA

aput vA, vB, vC

Сохраняет целое (integer) значение от vA в массиве, на который ссылается vB на индекс vC

Также есть другие aget/aput, путем добавления окончания меняется тип значения:

  • boolean
  • byte
  • char
  • object
  • short
  • wide

Например: aget-objec (Получает объект(object))

Сравнения

Легенда:

  • A: Регистр назначения
  • B: Первый регистр источника
  • C: Второй регистр источника
  • B+: Первая пара регистров источника (pair)
  • C+: Вторая пара регистров источника (pair)

cmp-long vA, vB+, vC+

Сравнивает длинные (long) значения в исходных регистрах, сохраняя 0

  • Если vB+ == vC+ то сохраняет 1;
  • Если vB+ < vC+ или vB+ > vC+ то сохраняет -1.

cmpg-double vA, vB+, vC+

Сравнивает числа с плавающей точкой (double) значения в исходных регистрах, сохраняя 0

  • Если vB+ == vC+ то сохраняет 1;
  • Если vB+ < vC+ или vB+ > vC+ то сохраняет -1.
  • Если vB+ или vC+ не являются числом, возвращается 1.

cmpg-float vA, vB, vC

Сравнивает значения с плавающей(float) запятой в исходных регистрах, сохраняя 0;

  • Если vB == vC то сохраняет 1;
  • Если vB < vC или vB > vCто сохраняет -1.
  • Если vB или vC не являются числом, возвращается 1.

cmpl-double vA, vB+, vC+

Сравнивает double значения в исходных регистрах, сохраняя 0;

  • Если vB+ == vC+ то сохраняет 1;
  • Если vB+ < vC+ или vB+ > vC+ то сохраняет -1.
  • Если либо vB+, либо vC+ не являются числом, возвращается -1.

cmpl-float vA, vB, vC — выполняет указанное сравнение с плавающей(float) запятой, сохраняя 0;

  • Если vB == vC то сохраняет 1;
  • Если vB < vC или vB > vC то сохраняет -1.
  • Если vB или vC не являются числом, возвращается -1.

Константы

const vAA, #+BBBBBBBB

  • A: Регистр назначения (8 бит)
  • B: 32-разрядное постоянное целое число со знаком

Переместит заданное постоянное целочисленное (integer) значение в указанный регистр vAA.

const/16 vAA, #+BBBB

  • A: Регистр назначения (8 бит)
  • B: Целое число(integer) (16 бит)

Заносит #+BBBB в регистр vAA

const/4 vA, #+B

  • A: Регистр назначения (4 бит)
  • B: Целое число (4 бит)

Помещает заданную 4-битную целую константу в регистр назначения vA.

const/high16 vAA, #+BBBB

  • A: Регистр назначения (8 бит)
  • B: Целое число (16 бит)

Поместит 16-битную константу в самые верхние биты регистра vAA. Используется для инициализации значений float.

const-class vAA, Lclass

  • A: Регистр назначения (8 бит)
  • class: Ссылка на класс

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

const-string vAA, "BBBB"

  • A: Регистр назначения (8 бит)
  • B: Строковое значение (string)

Переместит ссылку на строку, указанную в регистре назначения vAA

const-string/jumbo vAA, "BBBBBBBB"

  • A: Регистр назначения (8 бит)
  • B: Строковое значение (string)

Переместит ссылку на строку, указанную в регистре назначения vAA

jumbo — обозначает, что значение будет "большим"

Еще примеры:

const-wide/16 vA+, #+BBBB

const-wide/high16 vA+, #+BBBB

const-wide vA+, #+BBBBBBBBBBBBBBBB

Go To

goto — Безусловный переход к :target.

  • goto :target
  • goto/16 :target #16bit
  • goto/32 :target #32bit

Примечание: goto буквально использует ± смещения от текущей команды. APKTool преобразует их в метки для удобства чтения. Если внутри кода, для смещения требуется 16-битное значение, следует использовать goto/16, или для 32-битного значение, следует использовать goto/32. Почти невозможно определить, требуется ли goto/16 или goto/32 при добавлении новой команды (если не знаешь наверняка). Если вы точно не знаете какой бит, goto/16 может заменить любой goto, а goto/32 может заменить любой goto/16 или goto.

Только замена не может производиться на оборот: goto не может заменить goto/16, а он в свою очередь не может заменить goto/32.

Условия

if — Если выполняется условие, происходит переход по метке

Легенда:

  • A: Первый регистр для проверки (integer)
  • B: Второй регистр для проверки (integer)
  • target: Целевая метка

Примечание: != — неравно

Примеры:

Постфикс Команда Эквивалентное условие
eq if-eq vA, vB, :target vA == vB
eqz if-eqz vA, :target vA == 0
ge if-ge vA, vB, :target vA >= vB
gez if-gez vA, :target vA >= 0
gt if-gt vA, vB, :target vA > vB
gtz if-gtz vA, :target vA > 0
le if-le vA, vB, :target vA <= vB
lez if-lez vA, :target vA <= 0
lt if-lt vA, vB, :target vA < vB
ltz if-ltz vA, :target vA < 0
ne if-ne vA, vB, :target vA != vB
nez if-nez vA, :target vA != 0

Invoke

Легенда:

  • vA-vX: Аргументы, передаваемые методу
  • class: Имя класса, содержащего метод
  • method: Имя метода для вызова
  • R: Тип возврата.

Вызывает нестатический (non-static) direct метод (то есть метод экземпляра, который по своей природе не переопределяется, а именно либо метод private instance, либо конструктор):

invoke-direct { vA, v.., vX }, Lclass;->method()R

Вызывает метод интерфейса (interface method) (то есть объект, чей конкретный класс неизвестен, используя метод, который ссылается на интерфейс):

invoke-interface { vA, v.., vX }, Lclass;->method()R

Вызывает статический метод (static method) (который всегда считается прямым методом):

invoke-static { vA, v.., vX }, Lclass;->method()R

Вызывает виртуальный метод (virtual method) непосредственного родительского класса:

invoke-super { vA, v.., vX }, Lclass;->method()R

Вызывает виртуальный метод (virtual method) (метод, который не является статическим или окончательным, и не является конструктором):

invoke-virtual { vA, v.., vX }, Lclass;->method()R

Примечание:
Если метод возвращает значение (R не является «V» для Void), он должен быть зафиксирован в следующей строке одним из операторов move-result или он будет потерян.

Так-же можно не перечислять все аргументы vA-vX, а сделать диапазон аргументов (Range of arguments) путем добавления окончание /range. Например:

invoke-direct/range { vA .. vX }, Lclass;->method()R 

И так можно делать с любым выше перечисленным invoke:

  • invoke-direct { v1, v2, v3 } тоже самое что и invoke-direct/range { v1 .. v3 }
  • invoke-direct { v0 } тоже самое что и invoke-direct/range { v0 .. v0 }

Часто приводит к ошибкам использование invoke-virtual{ vX } в место invoke-virtual/range{ vX .. vX } в методах с большим количеством локальных регистров (v1, v2, v22)

Прочее

check-cast vAA, Lclass

  • A: Референтный регистр (8 bits)
  • B: Ссылка на тип (16 bits)

Проверяет, может ли ссылка на объект в vAA быть передана экземпляру типа, на который ссылается класс.
Выдает ClassCastException, если это невозможно, продолжает выполнение иначе.

instance-of vA, vB, Lclass

  • A: Регистр назначения (4 bits)
  • B: Референтный регистр (4 bits)
  • C: Ссылка на класс (16 bits)

new-instance vAA, Lclass

  • A: Регистр назначения (8 bits)
  • B: Ссылка на тип

Создает объект класса типа и помещает ссылку на вновь созданный экземпляр в vAA.
Тип должен относиться к классу non-array.

nop

Пустая команда/Нет операции

throw vAA

Выбрасывает указанное исключение. Ссылка на объект (object) исключений находится в vAA.

  • A: Exception-bearing register (8 bits)

Move

Легенда:

  • A: Регистр назначения (4, 8, 16 bits)
  • B: Исходный регистр (4, 16 bits)

Прим: A: x bits. B: x bits не является частью кода. Добавил только для обозначения бит в регистрах

move vA, vB

A: 4 bits. B: 4 bits

Перемещает содержимого одного регистра не-объекта (non-object) к другому.

move/16 vAAAA, vBBBB

A: 16 bits. B: 16 bits

Делает тоже самое, что и move. Только исходный регистр и регистр назначения 16 bits

move/from16 vAA, vBBBB

A: 8 bits. B: 16 bits

Делает тоже самое, что и move/16. Только регистр назначения 8 bits

move-exception vAA

A: 8 bits

Сохраняет только что пойманное исключение в vAA. Это должна быть первая инструкция любого обработчика исключений, чье исключение исключений не должно игнорироваться, и эта инструкция может когда-либо возникать только в качестве первой инструкции обработчика исключений. P.S: без тавтологии никуда)

move-object vA, vB

A: 4 bits. B: 4 bits

Перемещает содержимое одного объекта, несущего регистра в другой.

move-object/16 vAAAA, vBBBB

A: 16 bits. B: 16 bits

Делает тоже самое, что и move-object. Только исходный регистр и регистр назначения 16 bits

move-object/from16 vAA, vBBBB

A: 8 bits. B: 16 bits

Делает тоже самое, что и move-object/from16. Только регистр назначения 8 bits

move-result vAA

A: 8 bits.

Переносит результат одиночного слова не объекта (non-object) из самого последнего типа invoke в vAA. Это должно быть сделано как инструкция сразу после вида invoke, результат которого (однословный, не объект) не должен игнорироваться.

move-result-object vAA

A: 8 bits.

Переносит результат объекта из последнего вида invoke в vAA. Это должно выполняться как инструкция сразу после типа invoke-типа или fill-new-array, чей (объект) результат не должен игнорироваться.

Остальное кратко:

  • move-result-wide vA+ — A: 8 bits
  • move-wide vA+, vB+ — A: 4 bits. B: 16 bits
  • move-wide/16 vA+, vB+ — A: 16 bits. B: 16 bits
  • move-wide/from16 vA+, vBBBB — A: 8 bits. B: 16 bits

Операции

Оператор ADD

Cкладывает значения по обе стороны от оператора

add-double vA+, vB+, vC+

  • A: Пара регистров назначения (8 бит)
  • B: Пара регистров источника 1 (8 бит)
  • C: Пара регистров источника 2 (8 бит)

Вычисляет vB+ + vC+ и сохраняет результат в vA+

add-double/2addr vA+, vB+

  • A: Пара регистров источника 1 / регистр назначения (8 бит)
  • B: Пара регистров источника 2 (8 бит)

Вычисляет vA + vB и сохраните результат в vA+

add-float vA, vB, vC

  • A: Регистр назначения (4 бит)
  • B: Регистр источника 1 (4 бит)
  • C: Регистр источника 2 (4 бит)

Вычисляет vB + vC и сохраняет результат в vA

add-float/2addr vA, vB

  • A: регистр источника 1 / регистр назначения (4 бит)
  • B: регистр источника 2 (4 бит)

Вычисляет vA + vB и сохраняет результат в vA

add-int vA, vB, vC

  • A: регистр назначения (4 бит)
  • B: регистр источника 1 (4 бит)
  • C: регистр источника 2 (4 бит)

Вычисляет vB + vC и сохраняет результат в vA

add-int/lit8 vA, vB, 0xC

  • A: регистр назначения (8 бит)
  • B: регистр источника (8 бит)
  • C: подписанное постоянное значение константы (8 бит)

Вычисляет vB + 0xC и сохраняет результат в vA

add-int/lit16 vA, vB, 0xC

  • A: регистр назначения (4 бита)
  • B: регистр источника (4 бит)
  • C: подписанное постоянное значение константы (16 бит)

Вычисляет vB + 0xC и сохраняет результат в vA

add-int/2addr vA, vB

  • A: регистр источника 1 / регистр назначения (4 бит)
  • B: регистр источника 2 (4 бит)

Вычисляет vA + vB и сохраняет результат в vA

Оператор AND

Бинарный оператор копирует бит в результат, если он существует в обоих операндах.

Оператор DIV

Делит левый операнд на правый операнд

Оператор MUL

Умножает значения по обе стороны от оператора

Оператор OR

Копирует бит, если он существует в любом из операндов.

Оператор REM

Делит левый операнд на правый операнд и возвращает остаток

Оператор SHL

Значение левых операндов перемещается влево на количество бит, заданных правым операндом.

Оператор SHR

Значение правых операндов перемещается вправо на количество бит, заданных левых операндом.

Оператор SUB

Вычитает из правого операнда левый операнд

Оператор USHR

Оператор XOR

копирует бит, если он установлен в одном операнде, но не в обоих.

Return

Оператор return используется для выполнения явного возврата из метода. То есть он снова передает управление объекту, который вызвал данный метод. Оператор return предписывает интерпретатору остановить выполнение текущего метода. Если метод возвращает значение, оператор return сопровождается некоторым выражением. Значение этого выражения становится возвращаемым значением метода.

return vAA

  • A: Регистр возвращаемого значения (8 bits)

Возврат из метода возвращаемого значения non-object со значением vAA.

return-object vAA

  • A: Регистр возвращаемого значения (8 bits)

Возврат из метода object-returning с помощью object-reference в vAA.

return-void

Возврат из метода void без значения.

return-wide vA+

  • A: Пара регистров возвращаемого значения (8 bits)

Возврат double/long (64-bit) значение в vA+.

Switch-и

packed-switch vAA, :target
Легенда:

  • A: Регистр который проверяется
  • target: Целевая метка таблицы packed-switch(переключателей)

Реализует оператор switch, где константы case являются последовательными. Инструкция (сценарий выполнения кода) использует таблицу индексов. vAA указатели в эту таблицу, чтобы найти смещение инструкции для конкретного случая. Если vAA выпадает из таблицы индексов, выполнение продолжается в следующей команде (случай по умолчанию). pack-switch используется, если возможные значения vAA являются последовательными независимо от самого минимального значения.
Пример таблицы с переключателями:

:target .packed-switch 0x1 # 0x1 = самое низкое/минимальное значение vAA :pswitch_0 # Перейдет к pswitch_0 если vAA == 0x1 :pswitch_1 # Перейдет к pswitch_1 если vAA == 0x2 .end packed-switch

sparse-switch vAA, :target

Реализует оператор switch, где константы case не являются последовательными. В инструкции используется таблица поиска с константами case и смещениями для каждой константы случая. Если в таблице нет соответствия, выполнение продолжается в следующей команде (случай по умолчанию).

:target .sparse-switch 0x3 -> :sswitch_1 # Перейдет к sswitch_1 если vAA == 0x3 0x65 -> :sswitch_2 # Перейдет к sswitch_2 если vAA == 0x65 .end sparse-switch

ссылка на оригинал статьи https://habr.com/ru/post/495024/

Звезды Вольфа-Райе — монстры под вуалью

К этим звездам вполне обоснованно применимы эпитеты «самые-самые». — Самые массивные, самые горячие, самые короткоживущие, обладающие самыми мощными и быстрыми звездными ветрами и самыми большими светимостями среди других звезд. Наше Солнце, желтый карлик, смотрится на их фоне, скажем прямо, непрезентабельно.
Звезды Вольфа-Райе являются одними из прародителей сверхновых, нейтронных звезд и черных дыр.

Эти сверхмассивные голубоватые светила, часто окруженные флуоресцирующими газовыми туманностями, крайне редки — в нашей Галактике их зафиксировано всего около 500.

Одни из самых немногочисленных звезд Вселенной — звезды класса Вольфа-Райе (WR).


Центральная звезда Вольфа-Райе (WR 136), окруженная своей туманностью NGC 6888.
Протяженность туманности — 25 св. лет. Она состоит преимущественно из водорода (красным) и кислорода (голубым), ионизированных мощным УФ-излучением звезды.


Найти наших редких птиц на просторах космоса несложно, если знать, где искать.
Звезды Вольфа-Райе (WR), как правило, обитают в областях активного звездообразования и формирования массивных звёзд. – Это области космоса, где имеется повышенная концентрация пыли и газа (в основном ионизированного Н II и молекулярного водорода). В таких протяжённых газопылевых туманностях при возникновении гравитационной неустойчивости рождаются молодые звёздные скопления (молодые звёзды почти никогда не встречаются поодиночке). Такие звездные ассоциации насчитывают десятки и сотни юных горячих голубых и бело-голубых сверхгигантов спектральных классов О и В.

В крупных спиральных галактиках эти своеобразные звездные ясли можно найти в ядре и в спиральных рукавах.


NGC 3603 — скопление в созвездии Киль в 20 тыс. св. годах от Солнца.

Одна из крупнейших областей звездообразования в Млечном Пути. Центр скопления имеет одну из самых высоких концентраций молодых массивных звезд.

Содержит 5 звезд Вольфа-Райе, две из которых составляют двойную систему с массами 120 (самая массивная звезда нашей Галактики) и 92 массы Солнца.
(Фото телескопа VLT в видимом и ближнем ИК-диапазонах).

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


Компактное молодое (менее 2 млн. лет) звездное скоплении r136 в туманности Тарантул (галактика Большое Магелланово Облако, 163 000 св. лет).
(Слева — фото «Хаббла» в УФ,- ИК- и видимом диапазонах).

Это обширная область ионизированного водорода, где происходят процессы активного формирования звезд. В центральной части скоплении на протяжении всего шестнадцати световых лет содержится 12 звезд Вольфа-Райе и ещё 19 – на периферии скопления!

Здесь расположена самая массивная и самая яркая из известных на данный момент звезд во Вселенной – звезда r136a1 (на картинке справа — в масштабе с Солнцем).

Температура фотосфер звезд Вольфа-Райе составляет в среднем 50 000 градусов, но может достигать и 210 000 К.

Пик их излучения при таких температурах приходится на очень дальнюю ультрафиолетовую область < 100 нм (для сравнения: у Солнца пик излучения — в зелено-голубой области видимого диапазона ~500 нм).

Основное излучение звезд WR приходится на ультрафиолет и ИК-диапазон. В видимом диапазоне звезда может быть на порядки тусклее, чем в УФ и без специальных фильтров выглядит в телескоп ничем не примечательным светилом. (При этом наблюдение за звездами WR в оптике часто бывает затруднено из-за сильного поглощения света пылью туманности в окрестностях звезды).

Однако болометрическая (т.е. суммарная по всем диапазонам) светимость звезды WR может составлять более миллиона болометрических светимостей Солнца.


Центральная часть Туманности Киля (NGC 3372), созвездие Киль, ~7 500 св. лет.
(Фото с 1,5-метрового телескопа обсерватории Ла-Силья).

В этой огромной области ионизированного водорода (ок. 300 св. лет в поперечнике) располагаются знаменитая Эта Киля и звезды Вольфа-Райе, одна из которых, WR 25 — самая яркая звезда нашей Галактики со светимостью в 6,3 млн. солнечных.


WR 25 (в центре) – двойная звездная система. Второй компонент – по-видимому, сверхгигант класса О4.
(Фото «Хаббла», видимый и ближний ИК-диапазоны).


WR 22 (в центре) – двойная звездная система.
Второй компонент – сверхгигант класса О9.

Такие колоссальные светимости обуславливают огромное световое давление на поверхности звезд WR. И давление это приводит к выбросу в окружающее пространство очень значительной части вещества – сильнейшему звездному ветру.

Скорость звездного ветра может доходить до 12 млн. км/час (для сравнения: скорость солнечного ветра составляет 1,5-2,8 млн. км/час). Звезды Вольфа-Райе как бы находятся в процессе медленного взрыва. При этом непрерывно выбрасываемое вещество звезды, вкупе со сброшенной ранее в процессе эволюции водородной оболочкой, создает вокруг ядра расширяющуюся туманность.


Звезда WR 124, 15 тыс. св. лет, созвездие Стрелы.
Окружена туманностью M1-67 около 6 св. лет в поперечнике. Возраст туманности около 20 тыс. лет. Скорость расширения — свыше 150 000 км/час.

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

«Пузыри»-туманности могут простираться на десятки световых лет и состоят в основном из ионизированного водорода (сброшенная ранее оболочка звезды), а также азота, кислорода, углерода и других элементов.


Туманность вокруг звезды Вольфа-Райе BAT99-2 в Большом Магеллановом Облаке.
(Фото с 8,2-метрового телескопа VLT в узкополосных оптических фильтра).

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


NGC 2359 или туманность Шлем Тора. 15 тыс. св. лет, созвездие Большого Пса.
Протяженность туманности — 30 св. лет, возраст – от 78 500 – 236 000 лет.

Для звезд наподобие нашего Солнца потеря массы вследствие звездного ветра не играет существенной роли. За год наша звезда теряет $10^{-14}$ собственной массы. С учётом оценки времени существования Солнца в 5 млрд. лет, наше светило за всю жизнь потеряло всего 0,001% массы своего вещества.

Звезды Вольфа-Райе (а срок пребывания звезды на этой стадии эволюции всего несколько сотен тысяч лет), могут потерять за время своего существования больше половины собственной массы. Со звездным ветром каждые 10 000 лет звезда выбрасывает в пространство эквивалент массы Солнца.


Туманность NGC 3199 вокруг центральной звезды WR 18.
12 000 св. лет от нас, созвездие Киля.
(Фото телескопа VLT).

Скорость потери массы зависит и от скорости вращения звезды. Но у звезд Вольфа-Райе с вращением не все так однозначно. — С одной стороны, предполагаемые скорости вращения поверхностных слоев некоторых звезд могут составлять 200-300 км/сек. Иначе говоря, некоторые звезды WR делает оборот вокруг своей оси за ~2-4 дня, в зависимости от радиуса. (Для сравнения: Солнце делает оборот за ~25 дней).

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

В то же время высокая температура и светимость могут заставить звезду внезапно возобновить вращение.

Предполагается, что перед коллапсом ядра и последующим взрывом сверхновой, звезда настолько ускоряется, что вращается на пределе возможного.


Звезда Вольфа-Райе (WR 31a) в 30 тыс. св. лет от нас в созвездии Киля.
Газовый «пузырь» протяженностью почти 8 св. лет образовался примерно 20 тыс. лет назад. Скорость расширения туманности — 220 000 км/час.
(Фото «Хаббла» в видимом и ближнем ИК-диапазоне).

Плотный и быстрый звездный ветер — это характерная особенность звезд WR. Она находит свое отражение в спектрах этих звезд. – Он крайне необычен тем, что вместо тёмных линий поглощения имеются яркие эмиссионные линии излучения элементов (гелия, а также кислорода, углерода, азота в высоких степенях ионизации).

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

Вследствие таких огромных скоростей, ширина полос излучения в спектрах звёзд Вольфа — Райе достигает 5-10 нм, а интенсивности в центре линий иногда в 10—20 раз превосходят интенсивность соседних участков непрерывного спектра.

Из-за таких мощных отличительных эмиссионных линий в спектрах, звезды WR могут быть легко идентифицированы даже в соседних галактиках.


Видимые спектры звезд класса Вольфа-Райе и G2 (солнечный тип).
Видны широкие и мощные линии излучения у WR и узкие слабые линии поглощения у G2.

Как звезде «дойти» до жизни такой?

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

Звезды WR — это стадия в жизни голубых сверхгигантов, заключительная и очень непродолжительная. Как только сверхгигант класса О переходит от «сплавления» водорода в ядре к «сплавлению» гелия и начинает в силу определенных причин активно терять свою массу в звездном ветре, он становится звездой Вольфа-Райе.

Хотя все массивные звезды рано или поздно начинают «сплавлять» в недрах гелий, далеко не все переживают стадию звезды WR. Здесь требуются только «самые-самые» — звезды массами не менее 40 солнечных, если звезда одиночная (больше масса – выше температура – мощнее звездный ветер). И не менее 20 солнечных, если система двойная или кратная (здесь звездному ветру способствует звезда-компаньон, перетягивающая на себя вещество соседки).

Как правило, звезды WR уже израсходовали весь пригодный для сжигания в ядре водород (Солнцу его хватит ещё на 5 млрд. лет), которое теперь состоит в основном из гелия.

Таким массивным звездам, как сверхгиганты класса О, хватает энергии гравитации, чтобы зажечь в недрах не только гелий. – Возрастающие при сжатии ядра температура и плотность позволяют запустить дальнейшие углеродное, кислородное, неоновое, и наконец, кремниевое «горения» с синтезом элементов вплоть до группы железа.

После того как в ядре сверхгиганта при температурах около 150 млн. градусов загорается гелий, внешние слои звезды чудовищно расширяются — размер звезды увеличивается приблизительно в 100 раз. – Звезда входит в новую стадию эволюции — стадию красного сверхгиганта. В дальнейшем он сбрасывает остаточную оболочку из водорода. В итоге остается горящее ядро из гелия (и некоторых более тяжелых элементов), активно теряющее вещество в звездном ветре, которое становится самостоятельным светилом — звездой Вольфа-Райе.

Таким образом, можно утверждать, что звезды WR — это гелиевые остатки массивных звёзд, сбросившие (в виде водородной оболочки) и продолжающие сбрасывать (в виде звездного ветра) значительную часть массы.


NGC 7635 или туманность Пузырь почти 7 св. лет в диаметре. 7 100 световых лет от нас, созвездие Кассиопеи.
Чуть выше и левее центра Пузыря находится звезда класса О, потенциальная звезда WR, массой 44 и светимостью 398 тыс. солнечных.

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

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

Поэтому по преобладающим элементам в спектрах, звезды WR подразделяют на эволюционные спектральные подтипы:
«WN» — преобладают гелий и азот.
Ранняя стадия звезды WR, когда в звездном ветре преобладает вещество, которое находилось ранее в зоне горения водорода по CNO-циклу. При этом практически весь углерод превращается в азот.
«WC» — углерод и
«WO» — кислород, соответственно. — Более поздние стадии звезды, когда в ходе потери вещества оболочка сбрасывается и обнажаются слои, обогащенные продуктами горения гелия.

«Недолго музыка играла»

Срок жизни массивных звезд и без того невелик — всего несколько миллионов лет, а длительность заключительной стадии эволюции в виде звезды WR и того меньше — всего 200-300 тысяч лет.

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

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

(А если масса ядра составляла более 30 солнечных масс, нейтронная звезда претерпевает дальнейший коллапс и формирует чёрную дыру).

В момент коллапса ядра и дальнейшего грандиозного взрыва – вспышки сверхновой (типов Ib\c) высвобождается энергия порядка $10^{53}$эрг. Почти столько же вся наша Галактика излучает за год во всем электромагнитном спектре.

Стадию звезды Вольфа-Райе ещё называют предсверхновой.


Вспышка сверхновой SN-2013cu в созвездии Волопаса, 360 млн. св. лет от нас. Единственный зафиксированный взрыв звезды Вольфа-Райе. Вспышку удалось «поймать» спустя 15 часов после взрыва.

«Мы с Тамарой ходим парой»

Почти половина всех звезд нашей Галактики находятся в двойных или кратных системах. «Помочь» массивной звезде в двойной системе превратиться в звезду Вольфа-Райе может второй компаньон.

В тесных двойных системах, компоненты которых активно взаимодействуют между собой, обмениваясь веществом, второй компонент будет оттягивать на себя вещество будущей звезды WR.

Пусть на начальной стадии система состоит из двух массивных горячих О-В звезд. Более массивная звезда эволюционирует быстрее, увеличивает свой радиус и первой заполняет свою полость Роша. (В двойных системах вокруг каждой звезды-компаньона есть такая область, где силы ее притяжения преобладают над гравитационными силами другого компаньона. Эта область и называется полостью Роша). Теперь ее вещество через внутреннюю точку Лагранжа перетекает на вторую звезду. – Перед нами типичная звезда Вольфа-Райе.

Через ~300 тыс. лет следует неизбежный взрыв звезды WR как сверхновой, и теперь система состоит из нейтронной звезды или черной дыры и сверхгиганта класса О.

При взрыве сверхновой вся система получает немалый импульс и приобретает значительную пространственную скорость до 100 км/с.

Зачастую удается фиксировать такие быстролетящие вроде бы одиночные звезды (нейтронную звезду, если она не пульсар, сложно обнаружить), которые на больших скоростях мчатся поперек плоскости Галактики или в каких-то других загадочных направлениях. – Это результат взрыва сверхновой в системе.

Такие быстрые «одиночные» звезды составляют почти треть всех массивных звезд.


EZ Большого Пса или WR 6 — двойная звездная система, второй компонент, вероятно, нейтронная звезда.

Окружена эмиссионной туманностью Шарплесс 2-308, протяженностью 60 св. лет.

Зачастую двойные и кратные системы со звездами Вольфа-Райе бывают окружены туманностями и пылью с выраженной спиральной структурой. Такие «спирали» создаются высокоэнергичными ветрами из газа и пыли, которые вырываются наружу и переплетаются по мере того, как две массивные звезды вращаются друг вокруг друга.


WR 104 – тройная звездная система в 7 500 св. годах от нас.
Звезда WR и О-компаньон совершают оборот за 220 дней, образуя вокруг себя спираль взаимодействующих звездных ветров.
(Анимация из фотографий WR 104 в ИК-диапазоне, обсерватория Кека).

Гиперновые

Сверхмассивные (массой более 40 солнечных) быстровращающиеся звезды Вольфа-Райе – прямые кандидаты в гиперновые. Сила взрыва гиперновой может в 100 раз превышать силу взрыва сверхновой. Они являются источниками длинных гамма-всплесков, которые считаются одними из самых мощных взрывных процессов во Вселенной.

Энергия такого гамма-всплеска в рентгеновской части спектра может доходить до $10^{54}$ эрг.

Предполагается, что в нашей Галактике гиперновая взрывается в среднем один раз в 200 млн. лет.

Система 2XMM J160050.7-514245 представляет собой уникальную тройную звездную систему, состоящую из двух звезд Вольфа-Райе и сверхгиганта. Система окружена огромной пылевой структурой, похожей на раскручивающуюся спираль, которая была названа Апеп, в честь древнеегипетского божества, олицетворяющего хаос.

Скорость звездных ветров в системе оценивается около 12,3 млн. км/час, а сам пылевой шлейф расширяется со скоростью примерно 2 млн. км/час.

Система является мощным источником рентгеновского и радиоизлучения в нашей галактике. По оценкам ученых в ближайшие 10 000 лет эта быстровращающаяся система звезд породит гиперновую.


Тройная система Апеп, созвездие Наугольника, ок. 8 000 св. лет.
Центральное светило представляет собой двойную звезду Вольфа-Райе, выше – третий компонент – сверхгигант.
(Фото телескопа VLT, ближний и средний ИК-диапазон).

Галактики Вольфа-Райе

WR-галактики – это особый класс галактик, в которых идут очень активные процессы звездообразования и которые содержат очень большое количество звезд Вольфа-Райе.


NGC 3125 является отличным примером галактики со вспышкой звездообразования.
Созвездие Насос, около 50 млн. св. лет от Земли.

Эта эллиптическая галактика протяженностью всего 15 тыс. св. лет, содержит NGC 3125-А1 — одно из самых экстремальных скоплений звезд Вольфа-Райе в локальной Вселенной.
Яркие голубые точки, разбросанные по всему розовому ядру NGC 3125 – это молодые, горячие массивные звезды-гиганты.


SBS 1415+437 – ещё одна галактика Вольфа-Райе.
Принадлежит к типу карликовых. Около 45 млн. св. лет от Земли, созвездие Волопас.

Ну и в заключение: невооруженным глазом на небе можно увидеть только две звезды Вольфа-Райе. Правда, обе находятся в южном полушарии.

Θ (тэта) Мухи в ~ 7400 св. лет от нас.
Тройная звёздная система в созвездии Муха со звёздной величиной $+5.5^m$ Это вторая по яркости звезда Вольфа — Райе в небе, хотя большая часть визуальной яркости происходит от массивных компаньонов.
Звезда WR углеродного подтипа, 11 масс солнца, светимость 230 000 солнечных.

γ (гамма) Парусов— кратная (по меньшей мере шесть компонентов) звезда с видимой звёздной величиной в $+1.7^m$ (35-е место по яркости). Расстояние до звёзд системы — около 800 св. лет. Один из близких к Земле кандидатов в сверхновую.

Самая яркая Гамма Парусов А — двойная система, состоящая из голубого сверхгиганта спектрального класса O9 и углеродной звезды Вольфа-Райе, имеющей массу в 10 солнечных (первоначально имела ~ 35) и светимость 12 360 солнечных.

ссылка на оригинал статьи https://habr.com/ru/post/495008/

Подводные интернет-кабели: кто их прокладывает

К 2023 году число интернет-пользователей превысит 5 млрд. Чтобы удовлетворить требования аудитории, ИТ-компании и телекомы развивают подводную инфраструктуру, прокладывая оптоволоконные кабели по дну морей и океанов. Расскажем о новых проектах в этой области и их роли.


/ Unsplash / Julian Dufort

Свежие кабели

Сейчас мир «опоясывает» больше трех сотен кабельных систем. Управляют ими крупные корпорации и телекоммуникационные компании. Например, в 2018 году Microsoft, Facebook и Telxius ввели в эксплуатацию кабель MAREA. Его пропускная способность составляет 160 Тбит/с — это один из самых высокопроизводительных каналов в Атлантике. С тех пор эти и другие организации продолжили развивать подводную инфраструктуру, чтобы удовлетворить растущие потребности пользователей.

В феврале этого года Google и Facebook начали работу с Pacific Light Cable Network (PLCN). Его длина составляет 12,8 тыс. километров, а пропускная способность — 144 Тбит/с. Он соединяет США, Филиппины, Тайвань и Гонконг. Однако из-за напряженной геополитической ситуации, секция кабеля, идущая в Китай, пока останется неактивной.

О чем мы пишем в блоге на Хабре:

Еще один новый канал — DARE1 — длиной 5 тыс. километров соединил Кению и Джибути. Работу над ним завершили в начале марта. Его пропускная способность равна 36 Тбит/с. Кенийское правительство инвестировало в проект 59 млн долларов, чтобы расширить возможности локального сотового оператора Telkom.

Ближайшие проекты

В третьем квартале этого года Google планирует завершить прокладку кабеля Dunant. Он пролегает по дну Атлантического океана и соединяет восточное побережье США с Францией. Проектная длина высокоскоростной линии превышает 6 тыс. километров. Инженеры использовали технологию SDM (space-division multiplexing) — пространственное уплотнение сигналов. В этом случае лазеры и другие оптические компоненты промежуточных усилителей работают не с одной парой волокон, а сразу с несколькими. В итоге пропускная способность линии увеличивается в 20 раз, по сравнению с обычными подводными линками. Ожидается, что Dunant обеспечит скорость 250 Тбит/с.

Другая компания — SubCom — планирует закончить прокладку кабеля Oman Australia Cable project (OAC) в декабре 2021 года. Это будет первая высокоскоростная линия, которая напрямую соединит Австралию и регион EMEA (включает Европу, Ближний Восток и Африку).

Зачем так много «проводов»

Есть несколько причин, по которым компании выделяют средства на развитие подводной ИТ-инфраструктуры.

Увеличение производительности. Кабельные маршруты влияют на задержку при передаче данных. Расширяя количество магистралей, телекомы снижают время ожидания. Тот же проект Dunant в Google реализуют для того, чтобы увеличить доступность сервисов компании в Европе. По трансатлантическим линиям передают на 55% больше данных, чем по тихоокеанским. И этому загруженному каналу требуются дополнительные мощности.

Расширение географии. Инфраструктура ИТ-компаний и облачных провайдеров разделена на регионы. В каждом регионе есть зоны, привязанные к ближайшим дата-центрам. Дополнительные каналы связывают центры обработки данных с новыми локациями, расширяя пользовательскую базу.


/ Unsplash / Nias Nyalada

Резерв. К берегам Японии подведены 26 подводных кабелей, а к берегам Великобритании — 54. Они не только повышают скорость доступа к сервисам, но и служат резервом на случай физического повреждения одного (или нескольких) из них. И происходит это гораздо чаще, чем может показаться на первый взгляд. Например, SEAMEWE 3, который связывает страны Азии, Ближнего Востока и Западной Европы, за 2017 год выходил из строя дважды.

В 65–75% случаев разрывы происходят по вине рыболовецких судов, бросающих якоря в неположенных местах. Так, четыре года назад один корабль порвал сразу три кабеля между островом Джерси и Лондоном. Только избыточное количество линков спасло Великобританию от полного обрыва связи. Весь трафик направили по каналу через Францию.

Но в мире все еще есть регионы, к которым идет единственная высокоскоростная линия, — например, Северные Марианские острова в Тихом океане. В 2015 году тайфун повредил кабель, оставив без интернета 50 тыс. человек. Поэтому телекоммуникационные компании продолжают расширять «подводную сеть». Чтобы исключить ситуации, когда тысячи людей остаются без связи.

Дополнительное чтение из корпоративного блога VAS Experts:

ссылка на оригинал статьи https://habr.com/ru/company/vasexperts/blog/494968/

Как искусственный интеллект может улучшить киберфизические системы?


Что такое киберфизические системы, почему они так актуальны сегодня, и какую роль в их развитии играет искусственный интеллект?

Изучение различных свойств информационно-технических систем с точки зрения взаимодействия их физической и цифровой составляющих — новое и актуальное направление современной науки о киберфизических системах [1].

Главными составными частями любой киберфизической системы являются (Рис.1):

  • физический слой системы (различные объекты реального физического мира самой разнообразной природы);
  • цифровой слой системы (множество данных о системе, хранимых в памяти компьютеров, алгоритмы управления физическими объектами, алгоритмы обработки информации и пр.);
  • интерфейс взаимодействия цифрового и физического слоя (различные сенсоры, управляющие механизмы и пр.);
  • интерфейс взаимодействия цифрового и физического слоя с человеком (различные XR технологии).

Рис.1 Концептуальная схема киберфизической системы, включающая основные составные части и виды их взаимодействий.
Рис.1 Концептуальная схема киберфизической системы, включающая основные составные части и виды их взаимодействий.

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

Киберфизические системы (Cyber-physical systems, CPS) — объект пристального исследования многих лабораторий по всему миру. Это и лаборатории ведущих мировых университетов: CyPhyLab Калифорнийского университета в Лос Анджелесе, целый ряд подразделений MIT media lab, лаборатории технологических лидеров промышленности, таких как Bosch, Toshiba или PTC.

У CPS есть очень много общего с другими информационно-техническими концепциями, такими как интернет вещей, умная пыль и туманные вычисления, т.е. со структурами типа “грид”. Но нужно понимать, что CPS — более широкое понятие, чем перечисленные выше, и они могут являться составными частями целой киберфизической системы. Более того, если рассматривать составные устройства киберфизической системы, то по отношению к другим концепциям, в CPS они находятся на более высоком уровне взаимодействия (Рис.2).

Рис.2 Уровни взаимодействия объектов реального мира внутри цифрового слоя.

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

Немецкая академия Acatech, один из лидеров в области развития Индустрии 4.0, уже говорит о перспективах национальных киберфизических платформ, которые складываются из трех типов сетей: интернета людей, интернета вещей и интернета сервисов. Если говорить про прототипы киберфизических платформ, то наиболее удачным примером на сегодняшний день является государство Сингапур, где на законодательном уровне принята инициатива “Умная нация”, которая подразумевает социальное и экономическое развитие на базе киберфизической платформы. Но не только лишь один Сингапур активно прорабатывает киберфизические платформы и системы — так, например, в США эта технология с 2011 года принята в ряд важнейших стратегических технологий. Про отличия киберфизических систем от другого типа систем и про их историю развития можно почитать здесь и здесь.

Рис.3 Киберфизические платформы как результат слияния интернета вещей, людей и сервисов.

В последнее время, для улучшения работы всех составных частей CPS, всё чаще используются методы искусственного интеллекта, в частности алгоритмы глубокого обучения. Данная конвергенция технологий формирует большое количество связей и данных — необходимых для развития ИИ.

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

Рис. 4 ИИ и его подобласти

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

ИИ ускоряет симуляции цифровых двойников

Рис. 5 Сравнение качества рендеринга классическими алгоритмами компьютерной графики и с применением нейронных сетей.

В процессе проектирования и эксплуатации киберфизических систем возникает ряд проблем. Одной из них является проблема согласованности времени между физическими объектами и их цифровыми двойниками [3]. Для управления объектами в реальном мире и предсказания их поведения создаются цифровые копии в виртуальном пространстве, на основе математических моделей [4–6]. Время, необходимое для симуляции такой модели, может отличаться от времени, с которым протекают реальные физические процессы в моделируемом объекте. Часто случается так, что математическая модель настолько сложна, что время компьютерной симуляции превышает реальное. Для ускорения вычислений, при сохранении качества симуляции, предлагается использование методов глубокого обучения.

Показательным является кейс по ускорению рендеринга облачных газовых структур при прохождении через них света. На эту тему есть замечательный доклад от Евгения Туманова и соответствующая заметка на habr.

Рис. 6 Формальная постановка задачи рендеринга облаков. (Евгений Туманов, доклад на HighLoad++ 2018).

Традиционный подход для решения этой задачи заключается в том, чтобы для каждого пикселя рассчитываемого изображения решать основное уравнения рендеринга, которое является интегральным уравнением Фредгольма 2-го рода. Решение такого типа уравнений является сложной алгоритмической задачей и требует много времени. Основная идея по ускорению вычислений в этом случае — в использовании нейронной сети в качестве универсального аппроксиматора, которым заменяется решение самой времязатратной части классического численного метода.

Рис. 7 Идея применения методов глубокого обучения для задачи рендеринга (Евгений Туманов, доклад на HighLoad++).

ИИ помогает принимать решения в космосе

Рис. 8 ЦУП сегодня.

В качестве киберфизической системы может выступать как отдельный беспилотный летательный аппарат (БПЛА), так и целая группировка таких аппаратов вместе с наземными станциями связи и управления. Хорошим примером является запущенная недавно компанией SpaceX группировка спутников Starlink. В процессе эксплуатации подобных групп БПЛА на околоземных орбитах возникает проблема опасности столкновения с космическим мусором, в связи с чем требуется рассчитывать возможные манёвры и принимать решения по уклонению.

Решение этой задачи для одного единственного БПЛА представляет определённые сложности — решение о манёвре уклонения принимает специальная комиссия из баллистиков ЦУПа за несколько витков до потенциального столкновения. В условиях текущего количества космического мусора это работает. Но эффективных систем по расчистке околоземного пространства пока нет, а эффект Кесслера может привести к тому, что потенциальных столкновений может возникать несколько за один виток. В такой ситуации времени на принятие решения будет критически мало, а из-за сложности ситуации в небе, просчёт потенциальных манёвров уклонения будет представлять чрезвычайно сложную задачу даже для группы опытных баллистиков.

Рис. 9 VR интерфейс ЦУПа будущего.

В процессе реализации проекта TZUP, в котором принимала участие команда PHYGITALISM совместно со специалистами из других компаний и университетов, была создана система моделирования движения спутников в околоземном пространстве с возможностью расчёта вероятностей столкновения с космическим мусором. Эта система была использована в качестве среды для обучения агентов искусственного интеллекта (задача обучения с подкреплением), т.е. цифровой двойник околоземного пространства стал генератором синтетических данных для обучения алгоритма. ИИ здесь выступает в качестве помощника диспетчера ЦУПа будущего. Система предлагает манёвры уклонения и визуализирует их, а специалисту остаётся только принять решение, какой из предложенных манёвров использовать. Получился своеобразный Яндекс.Навигатор в околоземном пространстве.

Рис. 10 Расчёт вероятности столкновения с помощью компьютерного моделирования.

ИИ на страже безопасности CPS


Рис. 11 Визуализация симуляции технологических процессов в цифровом двойнике завода.

Другой важной проблемой является обеспечение безопасности CPS — создание систем защиты от киберфизических атак стало новым актуальным направлением в области информационной безопасности. Вы можете ознакомиться с размышлениями на эту тему в следующей заметке.

Давайте рассмотрим практический кейс под названием PlantSim, реализованного командой PHYGITALISM. Основная цель проекта заключалась в создании системы обнаружения аномалий в каналах связи между ПЛК (программируемым логическим контроллером), управляющим технологическими процессами на нефтеперерабатывающем заводе, и системой инженерного мониторинга (SCADA). Для поиска аномалий в каналах управления было предложено использовать рекуррентную нейронную сеть [7].


Рис. 12 Структурная схема рассматриваемой киберфизической системы.

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

ИИ усиливает органы чувств CPS


Рис.13 Google project soli sensor.

Для лучшего качества функционирования CPS необходимо иметь как можно больше информации о состоянии среды, в которой функционирует такая система, и как можно точнее определять процессы, протекающие в её составных частях. Всевозможные сенсоры и датчики служат органами чувств для CPS. Чем лучше система“видит”, что происходит с ней и вокруг в данный момент времени, тем лучше будет качество принимаемых ею решений об управлении располагаемыми ресурсами.

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


Рис.14 Использование project soli для управления устройствами с помощью жестов.

В качестве более жизненного примера можно рассмотреть распознавание тонких человеческих жестов с помощью wi-fi сигнала для управления гаджетами.
И здесь искусственный интеллект может помочь с улучшением качества работы существующих датчиков или с созданием новых сенсоров. Наглядно это демонстрирует датчик Project Soli от компании Google.

Основная идея здесь не нова: wi-fi роутеры представляют из себя трансмиттеры-ресиверы электромагнитных волн. Проходя через пространство, электромагнитная волна отражается от различных объектов и возвращается обратно в устройство. Если некоторый объект начинает двигаться, то его скорость складывается или вычитается со скоростью движения электромагнитной волны, из-за чего возникает смещение в частоте и длине отражённой волны. Это явление называется эффектом Доплера, и как раз его-то мы и можем использовать для детектирования жестов, и не только с помощью wi-fi роутера. Однако, не всё так просто.

Во-первых, обычные роутеры работают на частотах порядка 5GHz. Такая частота может быть недостаточной для хорошей разрешающей способности алгоритма классификации, т.е. близкие по форме, но всё же разные по сути объекты будут распознаваться как один и тот же объект. Данную проблему решают повышением рабочей частоты устройства (у project soli рабочая частота составляет 57 – 64 GHz).

Во-вторых, в реальных задачах требуется распознавать не только конкретный жест, но и кому этот жест принадлежит, в одном помещении может быть сразу несколько людей и у всех у них может быть разный приоритет в системе. Эту и многие другие неозвученные проблемы решают с помощью применения современных алгоритмов глубокого обучения [8]. Такой подход, например, используется в проекте WiSee, реализованном студентами и сотрудниками Вашингтонского университета.

Поскольку для работы нейросетевых алгоритмов требуется достаточно сложные, однако однотипные вычисления, для их реализации в железе существует специальные вычислительные единицы, т.н. TPU (tensor process init) или иначе — нейромодули, нейропроцессоры. Такие вычислительные единицы могут быть оптимизированы под конкретную задачу, будь то распознавание лиц, голоса или жестов. Как раз для решения задачи распознавания жестов или пространственных перемещений небольших объектов был создан специальный TPU “Soli I-CB”, который может быть встроен в различные умные устройства и гаджеты.


Рис. 15 Нейрочипы project soli.

Вывод

Киберфизические системы — важная составная часть информационной эпохи. Чем лучше мы понимаем как проектировать, анализировать, защищать и улучшать такие системы, тем лучше, безопаснее и понятнее мы делаем мир вокруг нас. Как можно увидеть из рассмотренных выше примеров, искусственный интеллект может улучшить работу CPS на всех уровнях, а синергия этих двух актуальных направлений (AI + CPS) принесет множество интересных и неожиданных улучшений в нашу жизнь.

Если вы студент бакалавриата или вам интересна тема CPS, AI, XR технологий и реализация подобных проектов, то на этот случай у нас есть магистерская программа “Дополненная/виртуальная реальность и искусственный интеллект” на базе факультета прикладной информатики и информационных технологий МАИ, в сотрудничестве с технологической студией PHYGITALISM. В основе программы — курсы по искусственному интеллекту, киберфизическим системам, виртуальной и дополненной реальности, в рамках которых мы поможем вам разобраться во всех премудростях работы с технологиями на практике.

Ждем вас!

Автор

Вадим Кондаратцев,
R&D Engineer PHYGITALISM
Преподаватель МАИ

vadim@phygitalism.com
itcentrmai@gmail.com

Источники

1. Allgöwer, Frank & Sousa, João & Kapinski, James & Mosterman, Pieter & Oehlerking, Jens & Panciatici, Patrick & Prandini, Maria & Rajhans, Akshay & Tabuada, Paulo & Wenzelburger, Philipp. (2019). Position paper on the challenges posed by modern applications to cyber-physical systems theory. Nonlinear Analysis. 34. 147–165. 10.1016/j.nahs.2019.05.007.

2. Paulo Tabuada, Cyber-Physical Systems: Position Paper

3. Lee, Edward A. “The past, present and future of cyber-physical systems: a focus on models.” Sensors (Basel, Switzerland) vol. 15,3 4837–69. 26 Feb. 2015, doi:10.3390/s150304837

4. R. G. Sanfelice. Analysis and Design of Cyber-Physical Systems. A Hybrid Control Systems Approach // Cyber-Physical Systems: From Theory to Practice / D. Rawat, J. Rodrigues, I. Stojmenovic. — CRC Press, 2016

5. Shao Z., Liu J. (2013) Spatio-temporal Hybrid Automata for Cyber-Physical Systems. In: Liu Z., Woodcock J., Zhu H. (eds) Theoretical Aspects of Computing — ICTAC 2013. ICTAC 2013. Lecture Notes in Computer Science, vol 8049. Springer, Berlin, Heidelberg

6. E. A. Lee and S. A. Seshia, Introduction to Embedded Systems — A Cyber-Physical Systems Approach, http://LeeSeshia.org, 2011.

7. Filonov, Pavel & Kitashov, Fedor & Lavrentyev, Andrey. (2017). RNN-based Early Cyber-Attack Detection for the Tennessee Eastman Process. ArXiv abs/1709.02232

8. Qifan Pu, Sidhant Gupta, Shyam Gollakota, Shwetak Patel (2013) Whole-Home Gesture Recognition Using Wireless Signals // The 19th Annual International Conference on Mobile Computing and Networking (Mobicom’13)

ссылка на оригинал статьи https://habr.com/ru/company/itmai/blog/494498/