11
22= XtightlyCoupledIO
33Jan Oleksiewicz <jnk0le@hotmail.com>
4- :appversion: 3.2.47
4+ :appversion: 3.2.48
55:toc:
66:toclevels: 4
77:sectnums:
@@ -19,6 +19,7 @@ This document is released under a Creative Commons Attribution 4.0 International
1919[cols="1,5",options=header]
2020|====================================================================================
2121| Version | Change
22+ | v3.2.48 | typos, some improvemets
2223| v3.2.47 | typos, improve appendix
2324| v3.2.46 | fixed typos
2425| v3.2.45 | typo, anti windup satration not considered
@@ -267,9 +268,7 @@ mappings instead anyway.
267268
268269==== xmos
269270
270- Xmos went for software defined peripherals with a barrel processing.
271-
272- <<xmosxs1>>, <<xmosprog>>
271+ Xmos went for software defined peripherals with a barrel processing. <<xmosxs1>>, <<xmosprog>>
273272
274273The IO ports can be divided into 1,4,8,16, or 32 bit witdth. +
275274Buffered by shift registers, clocked by a timer or external clock. +
@@ -286,16 +285,16 @@ Provided by the following instructions:
286285- bit test (and set/clear/change) instructions (updates carry flag)
287286
288287Later versions (e.g. 56800) <<DSP56800RM>> extended the single bit into a bitmask match
289- where all of selected bits must be set or cleared to cause the condition.
290-
288+ where all of selected bits must be set or cleared to cause the condition. +
291289Masks in branching instructions are limited to 8 bits, targeting top or bottom byte.
292290
293291=== alternative approaches
294292
295293==== map to upper GPR
296294
297295Available on RVE only. Limited to 16 GPR mapped registers.
298- Allows to recycle standard risc-v instructions operating on GPRs.
296+ Allows to recycle major part of the microarchitectural pipeline as well as standard
297+ risc-v instructions operating on GPRs.
299298
300299==== use custom `csr` registers
301300
@@ -336,7 +335,7 @@ NOTE: ABI deviations is not standardized at this moment
336335
337336==== use AMO-op instructions
338337
339- There is limited availability of A extension acros embedded cores.
338+ There is limited availability of A extension across embedded cores.
340339
341340Still requires loading of base address. +
342341Base address must be generated with full `lui` + `addi` sequence as there is no immediate offset
@@ -350,7 +349,8 @@ NOTE: still available in first alternative approach as well as ABI deviations on
350349==== load to IO/store from IO register
351350
352351Useful to directly store or load IO content to/from memory without processing.
353- It is also non deterministic and can trap due to e.g. alignment or pmp restrictions, violating atomicity guarantee.
352+ It is also non deterministic and can trap due to e.g. alignment or pmp
353+ restrictions, violating atomicity guarantee (with expensive workarounds).
354354Those also would consume a lot of encoding space.
355355
356356==== IO with multiply/multiply-accumulate
@@ -411,7 +411,7 @@ NOTE: Destructive encodings are also justified by a bitfield insert instructions
411411possible only within destructive encoding.
412412
413413NOTE: P extension is about to introduce instructions with destructive `rd` encodings,
414- including IFMA, designated for DSP tasks
414+ including IFMA, designated for DSP tasks of the same domain as targeted by XTightlyCoupledIO
415415
416416==== `bfp` from 0.94 bitmanip
417417
@@ -503,10 +503,10 @@ Not reflecting actual memory mapped registers.
503503
504504==== memory model of IO access
505505
506- The access to IO registers by `tio.` instructions, follows the TSO moemory model with respect to each other.
506+ The access to IO registers by `tio.` instructions, follows the TSO memory model with respect to each other.
507507The repeated accesses to the same IO register is sequentially consistent.
508508
509- NOTE: TSO model is the best fit for typicall in-order pipelines longer than 2-3 stages
509+ NOTE: TSO model is the best fit for typical in-order pipelines longer than 2-3 stages
510510
511511NOTE: implementations cannot reuse operand forwarding to solve RAW hazards of IO registers
512512due to `volatile` rules
0 commit comments