vak: (Default)
[personal profile] vak
Оказывается, Гугл уже несколько лет развивает собственную процессорную архитектуру, которая называется Lanai. Про неё стало известно пять лет назад, когда Гугл добавил её реализацию в компилятор Clang:

"LLVM Patches Confirm Google Has Its Own In-House Processor"

Подробности архитектуры Гугл не раскрывает, и доступный хардвер не обещает. Чуть больше подробностей можно найти в статье:

"Google crafts custom networking CPU with parallel computing links"

Вроде как 32-битный процессор с 32 регистрами общего назначения. Утверждается, что идея процессора навеяна книгой:

"Parallel Computer Architecture. A Hardware / Software Approach"

В компиляторе Clang имеется поддержка этой архитектуры, если задать флажок --target=lanai. Вот как выглядит язык ассемблера:
$ cat hello.c 
int main()
{
return 0;
}
$ clang --target=lanai -S -O hello.c
$ cat hello.s
.text
.file "hello.c"
.globl main ! -- Begin function main
.p2align 2
.type main,@function
main: ! @main
! %bb.0:
st %fp, [--%sp]
add %sp, 0x8, %fp
sub %sp, 0x8, %sp
or %r0, 0x0, %rv
ld -4[%fp], %pc ! return
add %fp, 0x0, %sp
ld -8[%fp], %fp
.Lfunc_end0:
.size main, .Lfunc_end0-main
! -- End function
.ident "clang version 10.0.0-4ubuntu1 "
.section ".note.GNU-stack","",@progbits
.addrsig
Но не всё так безнадёжно. На гитхабе я обнаружил исходники симулятора архитектуры Lanai: https://github.com/TrueBitProject/lanai

ОЛЯ и ЯЛО

Date: 2021-06-18 05:26 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
LANAI & IANAL
:)

Date: 2021-06-18 07:41 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
Не понял.

Date: 2021-06-18 09:23 (UTC)
archaicos: Шарж (Default)
From: [personal profile] archaicos
А, это. Х.з.. Я разглядел https://acronyms.thefreedictionary.com/IANAL .

Date: 2021-06-18 17:15 (UTC)
From: [personal profile] dijifi
I am not a lawyer, популярная аббревиатура на юзенете в превебную эпоху

Date: 2021-06-18 07:03 (UTC)
sab123: (Default)
From: [personal profile] sab123
А он разве не RISC V?

Date: 2021-06-18 07:34 (UTC)
nms: (Default)
From: [personal profile] nms
В 198х, разглядывая микрокод СМ-4, я обнаружил что

MOV addr, PC

исполняется быстрее чем

JMP addr

Проверил осциллоскопом. С того момента в моём коде не было джампов. Вот!

Date: 2021-06-18 08:18 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
https://retrocomputing.stackexchange.com/a/2662

В отличие от MOV, JMP не изменяет флаги, и с его помощью можно делать relative branching на расстояние больше 128, чего с помощью MOV to PC не сделаешь.

Date: 2021-06-18 07:44 (UTC)
ufm: (Default)
From: [personal profile] ufm
Интересно, а в нём MOV -PC, -PC реализовать можно?

Date: 2021-06-18 08:24 (UTC)
From: [personal profile] ivanrubilo
Очень простенький с виду. Нет фпу, бранч делей слоты даже присутствуют - стало быть и бранч предиктора нет, стало быть не надо агрессивно кормить входными данными функциональные блоки, стало быть и блоков мало и ин-ордер и пайплайн короткий. Похоже на древний МИПС на первый взгляд как-будто.

Date: 2021-06-18 08:31 (UTC)
From: [personal profile] ivanrubilo
Вполне может быть это для шедулера для тензор флоу акселераторов (или каких-то других акселераторов) в основном используется.
Крутит какую-нить ThreadX и входные данные в подходящий вид преобразует и рассылает на мактрикс-мультипликаторы.

Не очень понятно почему не RISC-V в 2021-то году.
Edited Date: 2021-06-18 08:32 (UTC)

Date: 2021-06-18 17:11 (UTC)
From: [personal profile] permeakra
Vendor Lock ?