Version History
Date | Revision | Description | Author |
2017-07-05 | A | Documents created with features in subsequent revisions | Vinh Nguyen canvinh@gmail.com |
2022-04-09 | PB1 | Added section 15 for multiple monitors | Vinh Nguyen |
|
|
|
|
|
|
|
|
|
|
|
|
B. System Descriptions
Figure 1. Layout of data flow from a program to a processor.
I will base my notes on some of syntax of the PLEX-C programming language for easier illustration of the flow of data and processing. I can’t recall the correct syntax after 20 years.
---------
In this case, the signal PrintData would be placed in the Delivery Queue to dispatch to its destination program.
2. Specialized Processor
EXEC SP_RotateAirplane WITH vertex5, vertex6, vertex7, vertex8;
SEND RecordData with data1, data2, data3, data4;
Depending of the variable type or address in the section of codes, e.g. permanent or temporary, the processor would save data in the database for other programs used.
In this case, the signal SP_RotateAirplane would also be executed by the specialized processor.
The specialized processor would place the signal RecordData with data to the Delivery queue for delivery.
This specialized processor may send back data to other programs in ordinary signals or predetermined signals with data for further processing. In case of sending an ordinary signal, the signal would be placed in the Delivery Queue or Special Delivery Queue for dispatching, i.e. the Delivery Queue and Special Delivery Queue could be the same OR only one Delivery Queue required by the system.
The specialized processor is a customized processor with firmware/software and hardware including microprocessor for special tasks, e.g. dedicated for hidden surface removal of an object. This would be useful in robotic simulation or 3D games.
The application could send a list of vertices of an object and a view point to the specialized processor, the object would be displayed properly with hidden surface removed. For example, software provider could provide an interface to declare an object as below
Attribute 2: ViewPoint;
End;
Attribute 1: Vertices for a surface;
Attribute 2: Image or color to be displayed on the surface above;
End;
If the specialized processor could handle many similar special tasks, the cost of the system would go down, because a specialized microprocessor was expensive.
4. Ericsson’s PLEX and other programming languages
Generic processor 1 and Generic processor 2 are running in parallel. The specialized processor is customized for specific tasks.
Other programming languages such as Java, C++, C#, etc. supports a string (stack) of function calls continuously, i.e. a processor was seized for a long period of time. It's harder to spread or to distribute tasks evenly on many generic processors.
In the diagram, only 2 identical generic processors were described. However, a system could be equipped with as many generic processors as needed, i.e. just plug-in new circuit board with a generic processor with proper bus and communication signals.
The goal was to keep product cost low and develop a good system. Having more specialized processors would make system expensive, i.e. harder to sell to many end users. However, developers could add more specialized processors as needed.
If the compiler had converted the high level language codes into assembly codes before loading into a queue or a processor, those statements/signals with prefixes would be treated differently, thus codes would be properly dispatched and executed.
In the diagram, only 2 generic parallel processors were described, but more generic processors could be added as needed. All discussions covered 2 or more generic processors. The only issue was the higher cost of a computer with more processors. A typical laptop would only need 2 generic parallel processors plus a specialized graphic processor for high demanding graphic games.
In the case above, a processing queue stores many sections of codes deposited by many programs during execution. Each section of codes would be marked the beginning and the end in the queue, thus a processor could fetch one section of codes at a time when the processor was ready for processing.
A delivery queue in this case stores many signals with data to be dispatched to a destination program. Each signal would be delivered whenever a processor was scheduled or available to process this queue. All processors could be busy with high priority tasks by the operating system.
Delivering a signal is an important task, because a signal would trigger a process in an application. One of method was to implement this in processor(s), thus an idle or free processor would check the delivery queue after a certain number of hardware clock cycles in order to deliver signals to their destination programs. However, having processor stopped and checked delivery queue in very short period of time, e.g. every 1 nanosecond, could be over-killed or slow down system unnecessarily. This process could be logged and fine tune by an operating system for an optimum period of time.
7. Difference between Microsoft Windows and APY in design
8. Explanation
The process to check delivery queue to deliver signal with data based on hardware (crystal) clock cycle could be tied to a processor or all parallel generic processors in the system. Microprocessors in these days are reliable, thus having a single generic processor checking delivery queue would simplify circuitry and its implementation including processing power. However, a critical system would tie this process to more than 1 processor or all generic processors to ensure that system would be functional if fault happened, e.g. a faulty processor for this process wouldn’t stop the entire system.
The OS supports this design would work for a motherboard of a single generic processor or more.
The specialized processor is an optional component in the system. If it is added to the motherboard and supported by a special programming language with library, the supplier must communicate with the OS and other generic processor providers in order to use the generic processors in their applications.
The programming language used in the example is PLEX. This language supports protocol’s application development. This would reduce the stacking of function calls on the system and release processors for other tasks in an efficient way. Personally I found that PLEX is easy to understand and to debug with Test System tool.
If the Delivery Queue is designed to deliver signals with data, the system would probably need only one queue for both generic processors and specialized processor(s). However, a specialized processor could communicate with itself and other components with signals plus unique data/information, thus having a separate delivery queue would be required.
9. Clarification
10.2 Tuning number of clock cycles required to deliver signals in Delivery Queue
10.3 Example of a block (program) in PLEX
11. Parallel processing
11.2 Supplementary Processing Queue
One of method to resolve issue above was to implement a Supplementary Processing Queue to store the early arrived section of codes, and to wait for its required data being executed in another part of the application.
signal with data could be sent out for further processing.
! codes between label1 and exit to the
! supplementary processing queue
12. Preloading data in memory to each processor
12.1 Concurrent main memory access
12.2 Handling of pre-load variables in a processors
13. Parallel memory
14. Miscellaneous notes
Figure 2. Specialized processor with delivery queue
14.2 Special Function prefixed with SP_
Multiple Monitors
To help stock traders or software developers, who have been using multiple monitors in their tasks, we could design a 4-screen or 4-monior laptop. The additional top (ID = 01), right (ID = 11), left (ID = 10) monitors could be pulled out from the regular/main monitor laptop (ID = 00) to make the laptop with 4 screens. Manufacturers could add 3 more (touch) keyboards underneath of the regular keyboards, which control a specific monitor.
Figure 3. Layout of multiple monitor system
The communications between software application and each monitor was described in the figure 3. Each monitor is uniquely identified by the processor motherboard with ID = 00, 01, 10, or 11.
As shown in the figure 3, each monitor is connected to the Monitor Dispatching Manager. When a user start an application, main monitor would show the intended data/UI of that application. User would normally drag any screen/UI to the monitor on the top, left, or right for display.
There are 2 ways for the software applications communicating correctly with the assigned monitor are
· When the user dragged the UI to a screen the system would relay the ID of the monitor back to the application layer and store it for subsequent communications.
· When the user started an application, the application would prompt user for destination monitor, e.g. main, top, left, or right. The application would store the monitor ID for subsequent communications.
In the figure 3, there are only 4 monitors used, therefore system would reserve 2 bits as ID. These 2 bits would be embedded or included in each message processed by the OS, processor motherboard, and then sent to the Monitor Dispatching Manager. Based on the value of these 2 bits, messages would be dispatched to correct monitor for display.
If each application has assigned a unique ID, which is passed through OS, processor motherboard, and toward the monitor, system does not need to pass the monitor ID (00, 01, 10, or 11) back to the application for future processing. The Monitor Dispatching Manager would only associate the application ID with each monitor ID and store locally for future communications after user dragging a UI to a specific monitor.
------------------------------------------------
Notes:
No comments:
Post a Comment