A Novel Software Radio Platform Based on General PC and Network
...xperimentation and rapid deployment by hiding the details of the operation of the I/O interface behind a standard interface while still providing high performance. In addition, the PCI bus, a widely used industry standard, permits the system to be portable to a wide range of workstations and take advantage of newer, faster processors [1]. B. Software Protocols In distributed environments, both the individual PC and the networks that provide access to those PCs may fail. We hence require that the networking behave robustly in the face of failure of any of the components on which the networking is built. It means that the networking components should be constructed under the assumption that failure is the rule, not the exception. It is this aspect of system behavior that motivates our use of soft-state registration protocols [2]. There are two basic protocols in the soft-state registration protocols: Networking Transportation Protocol (NTP) is used to access information from the workstation, while the Networking Registration Protocol (NRP) is used to notify aggregate directory services of the availability of this PC node. These two protocols are the fundamental building blocks on which our architecture is based, which are illustrated in section III.C. The computing nodes in the self-organized system must have the same management strategy, for the uniform supervising from the workstation. We adopt the Layered management pattern in our system, which is detailed in section III.D. III. THE IMPLEMENTATION ISSUES Based on the idea hereinbefore, we have successfully designed and implemented a system architecture including hardware I/O system and software system of our software radio system. Relevant issues are discussed below. A. The hardware I/O system Therefore, there are two main components in the architecture of the I/O system: the GuPPI (for General Purpose PCI I/O), which physically connects the analog front end to the workstation’s I/O bus; and the operating system additions, which provide the means for the application to access the sample streams. The GuPPI provides the system’s external interface to the analog front end. It bursts data between the front end and main memory at near the maximum I/O bus rate. In addition, the GuPPI decouples the timing between the fixed rate domain of the analog front end and the variable rate I/O bus without losing any samples. This absorbs any jitter caused by the bursty access to the I/O bus. These functions are performed without significant intervention from the processor; the required processing overhead per sample is less than half a cycle. A block diagram of the GuPPI is shown in Fig. 2. The GuPPI has a simple, generic daughter card interface to which analog front end-specific daughter cards are designed. This interface is directly connected to a set of first-in–first-out (FIFO) buffers in both the input and output directions. These FIFO’s provide buffering to absorb jitter caused by the bursty access to the PCI bus. The operating system components are responsible for ensuring that the flow of data between the GuPPI and kernel buffers is continuous. This includes facilities for absorbing the jitter due to scheduling and interrupts. The operating system support consists of a device driver for the GuPPI and several small additions to the virtual memory system, all for the Linux kernel. The total size of the code is just under 1000 lines, with the virtual memory system additions representing just 200 of those. The additions do not affect the performance or functionality of any part of the system not related to the GuPPI; all other applications run completely undisturbed. The virtual memory additions provide the low-overhead, high-bandwidth transfer of data between the application and the device driver. These components also provide the external interface to the application. To the application, the GuPPI appears to be a standard Unix device with copy semantics. However, virtual memory manipulations are used to make the system calls to the GuPPI copy-free. It is the responsibility of the application to provide real-time guarantees. If the application wishes to run in real time, then it must process the data at or above the average rate at which the system will transfer data. If the application does not run in real time, then the system will eventually begin to drop input samples or produce gaps in the output stream. The measurements of the GuPPI and I/O modifications were taken on a 200 MHz Pentium Pro system running Linux with a 33 MHz, 32 bit wide PCI bus. All cycle values were gathered using the Pentium Pro cycle counter. The maximum rate at which an application using the GuPPI driver can maintain a continuous flow of input samples from the GuPPI is 512 Mb/s. This number was determined using an application that only accessed enough samples per input buffer to verify data continuity. This an upper bound on the possible throughput that an application can achieve using the GuPPI. At rates above this point there is insufficient depth in the input data FIFO on the GuPPI to absorb jitter due to the PCI bus. To provide this high continuous throughput, the GuPPI must have higher raw throughput. Table I shows the maximum input and output burst performance of the GuPPI. These numbers reflect the amount of time required for the GuPPI to complete the DMA of approximately 1.2 Mb of data. The average processor overhead attributable to the GuPPI is less than half a cycle per sample. For large buffers it is less than a tenth of a cycle per sample. The maximum sustainable receive data rate visible to applications is 512 Mb/s. This is more than enough for most of the applications for which the system was designed. What’s more, the performance of the CPU is becoming higher and higher again. So, most of the system’s bottlenecks are not I/O-limited but processor-limited instead. It is the original motivate for us to consider the network as the distributed and parallel data processing platform. B. The software system of the workstation The main task of the workstation is making the initiation of the data before the processing, searching the PC available to perform the processing. The initiation includes the task distribution, the data stream decoupling, adding the message head and so on. The searching task is performed via the two basic protocols of networking described in section III.C. After the initiation: the host computer will send the messages to the PC nodes. Each computer node will process the data in the message entities according to the description of message head. Distribution scheme of the tasks considers arranging computing resources, such as computing nodes and network bandwidth. The latency time and data rate of network are two factors very important for real time processing. The network latency affects the executing time of a parallel program directly, and the speed of network decides the data throughput of the platform. To design a computing platform suitable for Software Radio, we should lower the latency of network communication and reduce the data stream of network. In the system, data streams are decoupled into blocks and these blocks will be processed at distributed PCs, which is also called computing nodes. Our management architecture (Fig.3) comprises two fundamental entities: highly distributed general PCs and specialized aggregate directory services. The distributed PCs form a common, VO-neutral infrastructure providing access to detailed, dynamic information about the network. For example, a message of a compute resource might provide information about the number of nodes, amount of memory, operating system version number and load average; a message of a running application might provide information about its configuration and current status. C. The two Basic Protocols of networking In distributed environments, both the individual PC and the networks that provide access to those PCs may fail. We hence require that the networking behave robustly in the face of failure of any of the components on which the networking is built. We define robust behavior to mean that the failure of any one component should not prevent the management from the workstation to other components of the system. It means that the networking components should be constructed under the assumption that failure is the rule, not the exception. This provides a means to gain a timely awareness of when failures have occurred. It is this aspect of system behavior that motivates our use of soft-state registration protocols [2]. A PC on node is defined as a PC that speaks two basic protocols, which are the main protocol of the soft-state registration protocols. The Networking Transportation Protocol (NTP) is used to exchange information with the workstation, while the Networking Registration Protocol (NRP) is used to notify aggregate directory services of the availability of this PC node. These two protocols are the fundamental building blocks on which our architecture is based. Aggregate directories make an important contribution to the scalability and reconfiguration of the NPC-SR architecture. Each aggregate directory provides a single point of contact to which queries for a specific VO may be directed. More importantly, each aggregate directory defines a scope within which search operations take place, allowing users and other services within a VO to perform efficient Discovery without resorting to searches that do not scale well to large numbers of distributed PC nodes. This scoping allows many independent VOs to co-exist in a system without adversely affecting their individual discovery performance. We observe that this architecture embodies many of the same structural ...