DMI – Graduate Course in Computer Science
Copyleft
2018 Giuseppe Scollo
outline:
possible evolutions of the codesign implemented in the previous lab tutorial may be conceived along two orthogonal development directions:
an example of orthogonal combination of both directions is given by the following objectives for a first project, dealt with in the next lab tutorial:
more significant functional extensions may be identified from consideration of functions, defined over Collatz trajectories, other than the delay but whose computation requires trajectory generation anyway
a first design alternative to be considered about the replication of the hardware unit for the delay computation is:
the latter option is preferable in view of possible further extensions that would require access by the different instances to shared data, e.g. defined as configuration parameters
other design decisions relate to the number of parallel instances of the computational component, henceforth termed cores, and the size of the coprocessor I/O data
the 64-bit extension of the single core input is easily obtained by a straightforward modification of the Gezel source from the previous lab tutorial, with the same correction to the VHDL output of the fdlvhd translator
the multicore coprocessor then ought to have circuits for the correct dispatching of I/O data between the interface and a core selected by the processor:
description in VHDL of multiplexing is simple if the core outputs are chained in a 2n×16-bit vector, as it is enough to use a selection operator on the vector
the more complex description in VHDL of demultiplexing is feasible by means of a logical shift operator, as it is exemplified for a generic decoder in Zwolinski, 4.2.3
signal exchange at the multicore coprocessor I/O ports is to be adapted to the available signals of the Avalon-MM interface, taking a few constraints on these into account, such as:
since the Nios II processor may transfer at most 32 bits in a single bus transaction, it is convened that this be the coprocessor word width at the Avalon interface, that is to say, the width of the writedata and readdata signals
the register address space of the coprocessor is thus the interval [0, 3×2n], taking one address for the status register into account, hence address is (n+2)-bit wide
the aforementioned website on the 3x+1 problem is a valuable source of inspiration for the codesign of functional extensions of the system considered hitherto; here are a few functions over Collaz trajectories (defined on the initial values, which determine the trajectories):
certain trajectories are more interesting than others because they establish records (like in a competitive race); in this sense, the following properties are defined: x0 is a
a few considerations follow that are useful to design functional extensions of the codesign finalized to the search of such rarities
functional extensions of the delay computation core, in order to provide the additional computation of the three functions introduced in the previous page, are fairly simple ones
the selection of the desired functions is to be considered in two different contexts:
it is useful to the search of the aforementioned Records the study of properties of theirs, that a priori exclude whole classes of values of x0 from the search space
optimization techniques for Record search algorithms may be found in the references