Дмитрий @DmitryZlobec
Разработчик программного обеспечения.
Information
- Rating
- 2,313-th
- Location
- Екатеринбург, Свердловская обл., Россия
- Registered
- Activity
Specialization
Backend Developer, Chief Technology Officer (CTO)
Lead
Git
SQL
OOP
Java
Docker
CI/CD
REST
Java Spring Framework
Spring Boot
Linux
"Акулов не бывает". Там 4 банка по 8 будет. [31:0] это как из Харрисов идет так всех в заблужденье и вводит. Посмотрите ARM® Cortex®-M Processor based System Prototyping on FPGA , у них там есть утилитка fromelf которая бинарник бьет на банки. (Ее в доступе нет, но смысл понятен)
Сделайте пожалуйста на GitHub я себе форкну.
https://is.ifmo.ru/books/2016/digital-design-and-computer-architecture-russian-translation_July16_2016.pdf
Вот только у меня второе издание, но там тираж 200 экз ))
GCC 14.2 уже очень сильно оптимизирует по сравнению с 12й версией (я на ней до сих пор сижу)
Это у первых Харрисов глава 7.5
Не про умножение речь, если вы сделаете комбинационный умножитель 32х32 через generate то на Cyclone 4 он займет 2КLUT и максимальная тактовая будет где-то 50МГц. (тоже интересовался победой в Coremark и честным умножением) Ну у него так и получилось.
Почему? Хорошая цифра, вот теперь можно говорить о конвейере. Но если 3.0 Cm/Mhz не получится, то конечно смысла бодаться нет.
и по лутам влез в OMDAZZ.
А если 25? Умножитель 32х32 на Cyclone 4 в 50 МГц влазит, тут вроде не сильно разлапистей
низя, конвейер получится
Техпроцесса ни у кого нет, а Coremark есть. Ты дал нам надежду и зажег огонь в наших сердцах !))
А точно что Fmax = 5МГц ? Он же его не синтезировал вроде еще.
Это можно отключить, синтезировать 128 байт памяти и посмотреть максимальную частоту.
Тогда есть шанс получить 1.25 CM/Mhz как у всех ((((
И вообще ковейеров много, а вот победа в CoreMark она одна
Увеличть то он ее увеличит, а где он техпроцесс то найдет? )))) У него судя по всему Cyclone iV или MAX10
Как это возможно на RV32? Атомиков же нет?
И у него же также сделано
if
(data_w)
begin ?
Ничего не понял. Блок M9k у Cyclone IV двухпортовый и такая конструкция на нем должна синтезироваться:
always_ff @(posedge clk)
<TAB> if(we) mem[addr]<=din;
assign dout= mem[addr];
Другое дело что на некоторых Cyclone Вы не сможете синтезировать [31:0] mem [1:1024]; Надо делать четыре штуки по [7:0]. В MIPSFpga и примерах на Cortex M0 так и сделано. Это в schoolRisc reg [31:0] rom [SIZE - 1:0];
А смысл подключать синхронную память если мы про SRAM. Отладок с синхронной памятью всего две шутки и одну из них делает @checkpoint
Запись сделана также как в YRV через маску Byte line enable, на ПЛИСе должно работать, там единственное что не все [31:0] умеют синтезировать, но это решаемо.
Интересно посмотреть как изменится CM когда появитс три стадии.
Стойте стойте, а почему вы собираете
%gcc_bin%-gcc %ccflags% -c src/core_list_join.c -o build/core_list_join.o
А где matrix?
PS. Хотя нет, я извиняюсь за занудство.
Результат теста во втрой статье $finish дает количество тиков 1,629,813 это развне не должно биться с Total ticks? Применяя аппаратное умножение $finish 802303 в два раза быстрее. В тестбенче
`timescale 1ns / 1ns
. Если бы тактовая была 1Mhz то в первом случае итерация бы заняла 1,6 секунды, вовтором 0.8. В первом случае у Вас 0,625 Cm/Mhz во втором 1, 25 как у всех однотактников. Где я ошибся?