I am open for a full time job, remote job, or contract. Author: Vinh Nguyen; Email: canvinh@gmail.com
Saturday, December 30, 2017
General marketing and selling a product
Monday, October 30, 2017
Implementation of Supply Chain Management
Passive RFID reader could read the unique ID of a passive RFID tag. The passive RFID reader could be connected to a computer network. Thus information could be recorded in database. A software application could be developed to handle data read by a reader.
The same configuration to a passive RFID reader is applicable to an active RFID reader for an active RFID tag.
6. Clarification
The process above was to describe how to associate a container to pallets, boxes, and items in each box. The receiver could easily retrieve data or items shipped in a container from a shipping source using an application on a computer network.
In a manufacturing plant setting, the assembly line could be automated or robotized; therefore any implementer of this supply chain management process must study the assembly line in order to add in “labels” (barcode, passive RFID tag, or active RFID tag) appropriately. It is unlikely that a manufacturer would scrap their entire automated assembly chain in order to implement this supply chain management, i.e. minimum changes must be proposed to the manufacturer.
Software application could be developed in order to handle items shipped or to control all shipments automatically at the shipper site. The receiving site software is to handle items received, etc. If they wanted to link all items to an invoice or payment process, it could also be done.
Sunday, August 27, 2017
Reading IS-41 Rev B standard
The goal to read this standard was to learn how to write a good document for a protocol application.
Wednesday, July 5, 2017
Parallel processors and specialized processor v1.15
A. 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
---------
In this case, the signal PrintData would be placed in the Delivery Queue to dispatch to its destination program.
The signal SP_Display3dReport (prefixed with characters SP_) with data would be placed in the Special Processing Queue by the generic processor to be executed by the Specialized Processor discussed later. The system identified the signal SP_Display3dReport by the syntax SP_PROCESS. Using the prefix SP_ would help in debugging.
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.
PLEX's programming language provides "Exit" to release processors for other programs executing tasks, thus it's easier to support parallel generic processors. The way programs (blocks) developed at Ericsson was similar, i.e. "a couple of tens lines of codes between receiving a signal (which triggers an execution of codes in that block) and then an Exit". This would help to distribute programming codes evenly for all generic processors.
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
5. Several specialized processors
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.
The modification would be
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.
Personally I don’t think a system would need parallel specialized processors. Otherwise developers could add identical specialized processor(s) in the same way as generic processors.
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.
6. Processing queue and Delivery queue
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.
Some of notes may be patented, thus you should check with patent offices before implementing those. I have used some of my knowledge of the Ericsson’s APZ architecture based on my memory to discuss parallel processors. Many of our PC and laptop have used processor core instead of parallel processors for faster task execution.
I intended to illustrate a system with parallel processors and a specialized processor. However, the entire system would be implemented in many different components of a real computer system, e.g. programming language, compiler, operating system, assembly language, motherboard hardware, and micro-processors.
I haven’t worked in any development of an operating system or hardware design in my career.
10 Examples
10.1 Current laptop configuration
Currently a laptop with an Intel i5 with 8GB RAM is around $650 CAD. A laptop with an Intel i7 and more (16GB) RAM could be around $3000 CAD.
I found the i5 laptop + Win 10 is performed well for daily stuff such as web chat and reading news. My kids could play many web games without any issues.
Thus, a laptop equipped with 2 Intel i5 microprocessors as generic parallel processors would perform very well. A specialized (graphic) microprocessor would be needed for users playing 3D games, virtual reality games, or intensive demand of processing power. This laptop would be less than $3000 CAD, but outperform the $3000 CAD laptop above.
10.2 Tuning number of clock cycles required to deliver signals in Delivery Queue
There is no good way to guess what would be the best number of clock cycles required to dispatch signals in the Delivery Queue for system’s best performance. There are so many unknown variables to consider in this case, e.g.
Timer would require logics and calculation, i.e. some processing power required.
! Section reserved for signal entry
GOTO label2;
GOTO label3;
signal with data could be sent out for further processing.
Exit;
label2;
signal with data could be sent out for further processing.
signal with data could be sent out for further processing.
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
14.1 Special Syntax
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.