In computer science, anti machine refers to the basic machine paradigm for reconfigurable computing that is the counterpart of the von Neumann machine. The difference between an anti machine and a von Neumann machine is that the anti machine is data-stream-driven and is therefore sequenced by data counters. The von Neumann machine, in contrast, is is instruction-stream-driven and is therefore controlled by a program counter. Another key difference is that the anti machine usually has multiple data counters, whereas the the von Neumann machine can have only a single program counter. The data counters are located within auto-sequencing memory blocks, which are programmed from flowware sources. An anti machine does not have a central processing unit, but rather one or several data path unit(s), also known as DPU(s).
The Auto-sequencing memory (ASM) is an essential part of the anti machine paradigm. It is part of the instruction sequencer and is co-located with the datapath. Traditionally this block, including the datapath unit (for example, an ALU) and the instruction sequencer, is called the CPU. The ASM is a key component of the paradigm shift from instruction-stream-based computing to the Reconfigurable Computing paradigm.
ASM use is a fundamental issue because in homogenous Reconfigurable Computing Systems, there is no instruction fetch at run time, since in a reconfigurable array (rDPU or a FPGA), the datapath units (DPUs) are connected to form a pipe network, where execution is transport-triggered - for example, upon arrival of data items coming along with the data streams driven through the array. For this reason instruction sequencers are not needed here. But a machine paradigm needs a sequencing mechanism - data counters are used.
An Auto-sequencing memory block (ASM block) is a RAM memory unit that includes a data address generator with the data counter (a data pointer) used as a data address register for implementation of a data stream. The direct memory access (DMA) unit is an example of such an address generator for an ASM. Another example is the generic address generator (GAG), a generalization of the DMA. In Reconfigurable Computing systems ASMs play an important role for massive speed-up by minimizing or avoiding memory cycle overhead for complex address computations.
Generic Address Generator
The Generic Address Generator (GAG) is a generalization of the direct memory access (DMA) method for the transfer of blocks of data or of data streams between memory and processing resource without the need to individually address each data item by a CPU instruction. The GAG is a reconfigurable address generator. The GAG is also a highly efficient implementation of the data sequencer for auto-sequencing memory (ASM) blocks. At run time after having been configured for a particular addressing pattern, the GAG does not need any memory cycles (except for fetching or storing the data item), even for highly complex address computations. Depending on the application, using a GAG instead of the addressing features of a classical CPU can yield speed-up factors of one order of magnitude or more. Without needing any memory cycles for address computation, the GAG methodology supports, for instance with a 2-dimensional address space, a wide variety of generic address sequences like video scans, slanted, sheared, triangular, or rotated video scans, shuffle of butterfly addressing patterns, spiral- or zigzag-shaped address sequences and much more, and, can be used to optimize storage schemes for image processing and massively parallel computing.
The GAG is also an important ingredient of the anti machine methodology, Note, that using Auto-sequencing memory is a fundamental issue distinguishing the anti machine paradigm of reconfigurable Computing from the von Neumann machine paradigm.
Data counters in an anti machine are used instead of a program counter by the reconfigurable computing systems. A computing machine paradigm needs a sequencing mechanism. The instruction-stream-driven von Neumann architecture paradigm uses a program counter for sequencing the instructions, according to software programming sources. Because the Anti machine is, however, data-stream-driven, it uses data counters which are programmed from Flowware sources. According to the Anti machine model the data counters are parts of address generators like DMA or GAG units, located in auto-sequencing memory blocks for data. Instead of a CPU, the anti machine uses DPUs.