sorear changed the topic of #riscv to: RISC-V instruction set architecture | https://riscv.org | Logs: https://libera.irclog.whitequark.org/riscv | Backup if libera.chat and freenode fall over: irc.oftc.net
Guest62 has joined #riscv
valentin has quit [Read error: Connection reset by peer]
valentin has joined #riscv
gatecat has quit [Ping timeout: 264 seconds]
gatecat_ has joined #riscv
Amanieu_ has joined #riscv
klys has quit [Ping timeout: 264 seconds]
Amanieu has quit [Ping timeout: 264 seconds]
gordonDrogon has quit [Ping timeout: 264 seconds]
GordonH has joined #riscv
NishanthMenon has quit [Ping timeout: 264 seconds]
ben_ has joined #riscv
jtdowney_ has joined #riscv
rjek has quit [Ping timeout: 264 seconds]
koorogi has quit [Ping timeout: 264 seconds]
dh` has quit [Ping timeout: 264 seconds]
jtdowney has quit [Ping timeout: 264 seconds]
dh` has joined #riscv
koorogi has joined #riscv
jrtc27_ has joined #riscv
jrtc27 has quit [Ping timeout: 264 seconds]
adamse has quit [Ping timeout: 264 seconds]
Guest62 has quit [Quit: Connection closed]
jrtc27_ is now known as jrtc27
bgamari has quit [Ping timeout: 272 seconds]
adamse has joined #riscv
NishanthMenon has joined #riscv
tnt has quit [*.net *.split]
leah2 has quit [*.net *.split]
leah2 has joined #riscv
Guest62 has joined #riscv
bgamari has joined #riscv
Guest62 has quit [Client Quit]
ben_ has quit [Quit: Leaving]
ovh is now known as riff-IRC
pabs3 has quit [Ping timeout: 252 seconds]
pabs3 has joined #riscv
valentin_ has joined #riscv
valentin has quit [Read error: Connection reset by peer]
KREYREN has joined #riscv
KREYREN has joined #riscv
KREYREN has quit [Changing host]
Gravis has quit [Changing host]
Gravis has joined #riscv
elastic_1 has quit [Ping timeout: 272 seconds]
_whitelogger has joined #riscv
GenTooMan has joined #riscv
_whitelogger has joined #riscv
elastic_1 has joined #riscv
klys has joined #riscv
KREYREN has quit [Quit: Leaving]
klys is now known as klysm
valentin_ has quit [Read error: Connection reset by peer]
valentin has joined #riscv
TwoNotes has quit [Quit: Leaving]
aquijoule__ has joined #riscv
aquijoule_ has quit [Ping timeout: 264 seconds]
iorem88 has joined #riscv
iorem has quit [Ping timeout: 272 seconds]
riff-IRC has quit [Ping timeout: 264 seconds]
valentin has quit [Read error: Connection reset by peer]
valentin has joined #riscv
riff-IRC has joined #riscv
riff-IRC has quit [Quit: PROTO-IRC v0.73a (C) 1988 NetSoft - Built on 11-13-1988 on AT&T System V]
_whitelogger has joined #riscv
iorem88 has quit [Ping timeout: 272 seconds]
valentin has quit [Read error: Connection reset by peer]
zjason has joined #riscv
valentin has joined #riscv
balrog has quit [Ping timeout: 272 seconds]
zjason` has joined #riscv
zjason has quit [Ping timeout: 265 seconds]
balrog has joined #riscv
sm2n_ is now known as sm2n
awordnot has quit [Ping timeout: 272 seconds]
awordnot has joined #riscv
zjason` is now known as zjason
SanchayanM has joined #riscv
riff-IRC has joined #riscv
riff-IRC is now known as ovh
ovh is now known as Win2KAdvancedSer
Win2KAdvancedSer is now known as Win2KAdvServer
Win2KAdvServer is now known as debian
debian is now known as SeagateSucks
SeagateSucks is now known as riff-IRC
riff-IRC is now known as WD_FTW
WD_FTW is now known as riff-IRC
valentin_ has joined #riscv
valentin has quit [Read error: Connection reset by peer]
s0ph0s|alt is now known as s0ph0s
valentin has joined #riscv
valentin_ has quit [Ping timeout: 244 seconds]
ahs3 is now known as ahs3|afk
_whitelogger has joined #riscv
xentrac has joined #riscv
valentin_ has joined #riscv
valentin has quit [Read error: Connection reset by peer]
geist2 has joined #riscv
iorem has joined #riscv
Sos has joined #riscv
agraf has joined #riscv
TenFiger has joined #riscv
FenTiger has quit [Read error: Connection reset by peer]
zjason has quit [Ping timeout: 264 seconds]
zjason` has joined #riscv
Sos has quit [Ping timeout: 264 seconds]
rjek has joined #riscv
agraf has quit [*.net *.split]
balrog has quit [*.net *.split]
klysm has quit [*.net *.split]
Forty-Bot has quit [*.net *.split]
merry has quit [*.net *.split]
q66 has quit [*.net *.split]
guerby has quit [*.net *.split]
ats has quit [*.net *.split]
xypron_ has quit [*.net *.split]
klysm has joined #riscv
xypron_ has joined #riscv
Forty-Bot has joined #riscv
agraf has joined #riscv
balrog has joined #riscv
merry has joined #riscv
guerby has joined #riscv
ats has joined #riscv
q66 has joined #riscv
balrog has quit [Ping timeout: 264 seconds]
ats has quit [Ping timeout: 264 seconds]
ats has joined #riscv
<enthusi> Hi
guerby has quit [Remote host closed the connection]
<enthusi> I must be missing something simple here. How is the alignment dealt with when there are random compact 16bit instructions mixed with word-aligned RISCV code?
<geist> as if it branches to a bad offset within another instruction?
<geist> the bottom few bits of the instruction tell the cpu the size of the instructino, but if you branch to the middle of a larger instruction, then that's Not Good
guerby has joined #riscv
<geist> basically when dealing with mixed 16/32 instructions then there's no guarantee that a 32bit instruction is 32bit aligned
balrog has joined #riscv
agraf has quit [Ping timeout: 264 seconds]
agraf has joined #riscv
Forty-Bot has quit [Ping timeout: 264 seconds]
Forty-Bot has joined #riscv
choozy has joined #riscv
<enthusi> geist: that was exactly my worry. So you can not branch to a label after a 16bit instruction if that carries a 32bit instr?
<enthusi> that would be pretty bad/hard
<enthusi> so the CPU itself can handle opcode-fetch at 16bit offsets then (even for 32bit opcodes) ?
GordonH has quit [Quit: Where's the Kaboom?]
gordonDrogon has joined #riscv
<geist2> that's correct
<geist2> basically a 16 or 32 bit instruction can be aligned on a 16 bit boundary
<rjek> Are 32 bit integer register loads allowed to 16 bit alignment too?
gordonDrogon has quit [Client Quit]
gordonDrogon has joined #riscv
<geist2> it doesn't affect the instruction at all
<geist2> a 32bit instruction works precisely the same way no matter how it's aligned
gatecat_ has quit []
gatecat_ has joined #riscv
<geertu> geist2: It does affect the instruction cache
gatecat_ is now known as gatecat
<geist2> sure, but doesn't change what the instruction does
<geist2> but sure, if it crosses a cache line or a page boundary it might take some additional time, or generate a fault
<geist2> i think there's a 16bit nop instruction to realign things for some critical loop or whatnot, if the particular microarchitecture wants it. there's lots of cases of aligning loops and whatnot on x86
<geist2> or, i think every 16bit instruction has a 32bit equivalent so you *could* just emit a 32bit instruction if otherwise you were going to have to just insert a nop
<sorear> instruction fetch and data memory are two completely separate paths out to the point of unification, which is usually after the caches; a risc-v RVC core is required to support misaligned access to 32 bit instructions, but not misaligned data
<sorear> it's not a huge amount of hardware because you're doing sequential fetches *anyway*, all you need to do is throw out the first 16 bits you get back if a jump target is 2 mod 4
choozy has quit [Ping timeout: 265 seconds]
SanchayanM has quit [Quit: SanchayanM]
SanchayanM has joined #riscv
wolfshappen has quit [Ping timeout: 264 seconds]
wolfshappen has joined #riscv
SanchayanM has quit [Quit: SanchayanM]
SanchayanM has joined #riscv
SanchayanM has quit [Client Quit]
zjason` is now known as zjason
<enthusi> sorear: but you cant branch accross a 16bit instruction to a 32bit instruction then?
<sorear> I don't follow, taken branches generally reset the fetch machinery so it doesn't make sense to talk about branching "across" anything
<enthusi> PC 0x0000 = 32 bit instruction with branch to LABEL
<enthusi> PC 0x0002 16 bit compact code
<enthusi> argh
<enthusi> PC 0x0004 16 bit compact code
<enthusi> LABEL
<enthusi> PC 0x0006 normal 32 bit code at offset 6 now
<sorear> after the branch is taken, the fetch system resets, and does a fetch from 0x0004
<sorear> since the branch address was 6 not 4, the first 16-bit parcel is thrown away
<sorear> the fetch from 4 is immediately followed (because no branch has been taken) by a fetch from 8, and at this point there is a complete 32-bit instruction, so it executes
<sorear> while that's happening there is a fetch from 0xc, etc
<sorear> there is of course a range of design space here, the fetch size doesn't have to be 4 bytes
gruetze_ is now known as gruetzkopf
<enthusi> so it kinda gets 'out of sync'?
<enthusi> but doesnt care of course
<enthusi> that would indeed mean (at first glance) that compact instructions have a significant impact on dye-size?
<sorear> why would it?
<sorear> you need 16 bits of temporary storage for the part of an instruction that overlaps between aligned words, compared to 992 bits for the main register file
FL4SHK has joined #riscv
FL4SHK has quit [Client Quit]
FL4SHK has joined #riscv
FL4SHK has quit [Client Quit]
FL4SHK has joined #riscv
choozy has joined #riscv
pokes has joined #riscv
reda has joined #riscv
dlan has quit [Quit: leaving]
dlan has joined #riscv
elastic_1 has quit [Quit: elastic_1]
elastic_dog has joined #riscv
zan has joined #riscv
zan has left #riscv [Leaving]
ahs3|afk is now known as ahs3
iorem has quit [Quit: Connection closed]
Gravis has quit [Ping timeout: 272 seconds]
valentin_ has quit [Read error: Connection reset by peer]
valentin has joined #riscv
Gravis has joined #riscv
Gravis has quit [Changing host]
Gravis has joined #riscv
Gravis has quit [Ping timeout: 264 seconds]
Narrat has joined #riscv
Gravis has joined #riscv
Gravis has quit [Changing host]
Gravis has joined #riscv
Gravis has quit [Ping timeout: 264 seconds]
TwoNotes has joined #riscv
Gravis has joined #riscv
Gravis has quit [Changing host]
Gravis has joined #riscv
valentin_ has joined #riscv
valentin has quit [Read error: Connection reset by peer]
cousteau has joined #riscv
mhorne has quit [Ping timeout: 264 seconds]
cousteau has quit [Changing host]
cousteau has joined #riscv
mhorne has joined #riscv
TwoNotes has quit [Remote host closed the connection]
TwoNotes has joined #riscv
valentin_ is now known as valentin
cmuellner_ has joined #riscv
cmuellner has quit [Ping timeout: 272 seconds]
cmuellner_ is now known as cmuellner
GenTooMan has quit [Remote host closed the connection]
GenTooMan has joined #riscv
peeps[zen] has joined #riscv
stefanct has quit [Excess Flood]
stefanct has joined #riscv
sorear has quit [Ping timeout: 272 seconds]
sorear has joined #riscv
hl_ has joined #riscv
tux3_ has joined #riscv
kgz has quit [Ping timeout: 272 seconds]
hl has quit [Write error: Connection reset by peer]
tux3 has quit [Read error: Connection reset by peer]
<dh`> the simplest approach is probably to fetch from the icache in 16-bit lots
peepsalot has quit [Ping timeout: 272 seconds]
aurel32 has quit [Ping timeout: 272 seconds]
aurel32 has joined #riscv
<dh`> the bottom few bits tells you how many more of them you need without having to decode the instruction fully
hl_ is now known as hl
kgz has joined #riscv
tux3_ is now known as tux3
stefanct has quit [Quit: quit]
stefanct has joined #riscv
Narrat has quit [Quit: They say a little knowledge is a dangerous thing, but it's not one half so bad as a lot of ignorance.]
stefanct has quit [Client Quit]
stefanct has joined #riscv
choozy has quit [Quit: https://quassel-irc.org - Chat comfortably. Anywhere.]
jn has quit [Ping timeout: 272 seconds]
jn__ has joined #riscv
jn__ has quit [Changing host]
jn__ has joined #riscv
valentin_ has joined #riscv
valentin has quit [Read error: Connection reset by peer]
toshywoshy has quit [Ping timeout: 248 seconds]
valentin_ has quit [Read error: Connection reset by peer]
valentin has joined #riscv