Parallel Programming in C for the Transputer
© D. Thiébaut, 1995

2-5 Technical aspects of the CSA Educational Kit

This section describes the IBM Personal Computer (PC) version of the CSA Transputer Educational Kit. Several versions of this kit exists, including one for Macintosh computers, and for Sun workstations.

In the remainder of this discussion we will assume that the boards contain one transputer per card. Other configurations exist, but the general mechanism of the interface between the transputer system and the PC remains the same.

Attached processor

The first concept to understand is that a transputer system incorporated in the CSA kit (as well as most other transputer systems) operates as an attached processor for the PC. As such, it does not replace the 80x86 processor in the PC, but works in conjunction with it. The PC is referred to as the host machine, or simply as the host. None of the software running on the PC is affected by the presence of the transputer network. Only software written by the user in LSC will be able to make use of the multiprocessing capability. Figure 2-1 illustrates the general architecture of a PC with an attached transputer network.


Figure 2-1: The transputer
as an attached-processor.

One of the transputers in the network is a designated driver. It is most often found inside the personal computer, in one of the 8-bit ISA I/O slots, so that it can have access to the system buses. There, it behaves as a dispatcher, transferring information from the PC to the transputer network (program and input data), or from the transputer network to the host (result data). This special transputer is referred to as the PC-link transputer, or root transputer.

Unlike the other transputers in the network which use their links to connect to other transputers, the root transputer dedicates one of its links (often Link 0) to communicate with the PC. This link is connected to an 8-bit I/O controller serving as an interface between the PC and its resources, and the transputer network. This I/O controller is quite simple and consists of two 8-bit buffers, one for data input, the other for data output. Each buffer is associated with a 1-bit status indicating whether the buffer it represents is full or empty. The 80x86 host thus sees the interface as four 8-bit registers. The root transputer sees the port as another transputer with which it exchanges data serially. The I/O controller manages the parallel to serial conversion (and conversely) between the PC and the transputer. Its main task is thus to parallelise bytes issued by the transputer, so that the host can read it on its data bus, and to serialize the bytes sent by the host, so that the root transputer can get them through its dedicated link. Figure 2-2 illustrates this concept.

In some systems, however, the root transputer is located inside the parallel machine, and the PC is equipped with an interface board which implements the I/O port described above. With such a simple interfacing concept, the transputer network can even be connected to several PC's, or to the same PC via several interface card. Such configurations, however, are for specific applications (multi-users for example) which are of little interest for us here.


Figure 2-2: The 8-bit interface port
between the host and the root transputer.

Serial port behavior


The transfer of information between the host and the root transputer is managed by the host as a standard 8-bit I/O operation, very similar to the communication with a parallel or RS232 port.

It is now clear that the transputer cannot directly control the resources of the host systems: user memory, file system, keyboard, video display, etc. It simply doesn't have access to them. Every access to the PC resources must go through the 8-bit I/O port, which is maintained, in software, by the 80x86. If the transputer needs to display a string of characters on the video screen, for example, it must send the 80x86 the string, along with a command telling the 80x86 what to do with it. Although, as we will see in Chapter 3, the Logical Systems C compiler allows us to program the root transputer to execute a printf() statement, this statement cannot be carried out unless the 80x86 is running a program that can carry out the operation. For this reason the execution of parallel programs on the transputer networks will always involve the 80x86 host in some respect.

Figure 2-3: The root node and the network: (a) the root node is an integral part of the ring network. (b) The root node cannot be configured in the transputer toroidal mesh.

Parallelism with one transputer?

With only one root transputer in our system, we could stop here, jump to the next chapter and start programming. After all, since the transputer can run several tasks concurrently, it is conceivable to generate and run parallel programs on a one-transputer network. In fact, for some readers, this might be an attractive solution: that of increasing the performance of their systems by delegating some of their application software to a transputer. A simple example will illustrate this point. In a CAD package, for example, one may consider migrating some of the time consuming routines locating the object closest to the current position of the mouse to a transputer to improve the response time of the system. The transputer can keep a copy of the list of objects visible on the screen and be passed the current coordinates of the mouse every time a selection is requested. By quickly scanning the list it can report rapidly to the main program (running on the host) the identity of the object selected.

Node transputers

The great power of the transputer, though, is in numbers: numbers of transputers connected together through a network. The CSA kits allow for an easy installation of a network of transputers. We saw that the network as a whole communicates with the host through the root transputer. This transputer loses one of its links to the PC-interface, and can dedicate the other links to the other transputers forming the network. These transputers are referred to as transputer nodes. They are mechanically identical to the root transputer, except that do not have the 8-bit I/O port on board. They, too, fit in a PC I/O slot, but because they only require access to the 5 Volt power supply, they can very easily be installed in expansion chassis external to the PC host.

Because the root transputer has one fewer link to dedicate to the network than its fellow transputer nodes, the root may or may not contribute to the global computation, depending on symmetry. Figure 2-3 shows two cases. In the first one, the root is included in the ring. In the second example, the root transputer cannot fit in the symmetry of the network, and sits outside. Very likely the decomposition of parallel applications for this type of network will make little use of the root transputer. Note that these two networks can be implemented only if 4-link transputers are available for the root (ring) as well as for the nodes (mesh). The 2-link T400 can only be used to implement linear chains.

The node-to-node connection is ingeniously implemented by having connectors on the back of the transputer cards, facing the back of the PC. These connectors make the four transputer links easily accessible for node-to-node connection, and very easily configurable. Since the cables used for node-to-node communication are electrically equivalent to Macintosh printer cables, one can implement multiple network configurations controlled by off-the-shelf switch boxes.

Memory

The CSA transputers can support up to four megabytes of memory. Table 2-1.Error! Bookmark not defined. shows the range of memory addresses available to the user for the internal and external memory.

Note that both the internal and external memory overlap. When a reference is made to an address in the range [0x80000000, 0x80000l7FC] on a T400, for example, the access is made to the internal memory, and not to the external memory.


 Transputer type   Internal Memory    External Memory                        
 T400              0x8000 0000        1 Mbyte            0x8000 0800        
                   0x8000 07FC                           0x800F FFFC        
                                      2 Mbytes           0x8000 0800        
                                                         0x801F FFFC        
                                      4 Mbytes           0x8000 0800        
                                                         0x803F FFFC        
 T800 T805         0x8000 0000        1 Mbyte            0x8000 1000        
                   0x8000 0FFC                           0x800F FFFC        
 T425                                 2 Mbytes           0x8000 1000        
                                                         0x801F FFFC        
                                      4 Mbytes           0x8000 1000        
                                                         0x803F FFFC        


Table 2-1: Memory map of 1, 2, and 4-MByte transputer systems.

[HOME] [NEXT]