For this topic you need to know this from AS
Architecture - Identify and describe the main components of contemporary computer architecture.
Plus these extra bullet points:-
Architecture - Describe and explain the limiting factors to parallelisation in parallel processing.
Architecture - Calculate the runtime of given tasks as a result of parallelisation and evaluate the effect of parallelisation.
Input / output - Describe and differentiate between voice input for command and control systems to operate a computer system, vocabulary dictation systems for general input and voice print recognition for security. Discuss the suitability of each system in different situations.
Networking - Identify and describe applications where connecting a portable device to a network is required.
Networking - Describe the hardware required to make a wireless connection and explain how this might be achieved using contemporary wireless technologies.
Architecture - Describe and explain the limiting factors to parallelisation in parallel processing.
Architecture - Calculate the runtime of given tasks as a result of parallelisation and evaluate the effect of parallelisation.
A program (or algorithm) which can be parallelized can be split up into two parts:
A part which cannot be parallelized
A part which can be parallelized
Imagine a program that processes files from disk. A small part of that program may scan the directory and create a list of files internally in memory. After that, each file is passed to a separate thread for processing. The part that scans the directory and creates the file list cannot be parallelized, but processing the files can.
The total time taken to execute the program in serial (not in parallel) is called T. The time T includes the time of both the non-parallelizable and parallelizable parts. The non-parallelizable part is called B. The parallizable part is referred to as T - B. The following list sums up these definitions:
T = Total time of serial execution
B = Total time of non-parallizable part
T - B = Total time of parallizable part (when executed serially, not in parallel)
From this follows: -
It may look a bit strange at first that the parallelizable part of the program does not have its own symbol in the equation. However, since the parallelizable part of the equation can be expressed using the total time T and B (the non-parallelizable part), the equation has actually been reduced conceptually, meaning that it contains less different variables in this form.
It is the parallelizable part, T - B, that can be sped up by executing it in parallel. How much it can be sped up depends on how many threads or CPUs you apply to execute it. The number of threads or CPUs is called N.
The fastest the the parallelizable part can be executed is thus:
According to Amdahl's law, the total execution time of the program when the parallelizable part is executed using N threads or CPUs is thus:
T(N) means total execution with with a parallelization factor of N. Thus, T could be written T(1) , meaning the total execution time with a parallelization factor of 1. Using T(1) instead of T, Amdahl's law looks like this:
To better understand Amdahl's law, let's go through a calculation example. The total time to execute a program is set to 1. The non-parallelizable part of the programs is 40% which out of a total time of 1 is equal to 0.4 . The parallelizable part is thus equal to 1 - 0.4 = 0.6 .
The execution time of the program with a parallelization factor of 2 (2 threads or CPUs executing the parallelizable part, so N is 2) would be:-
Making the same calculation with a parallelization factor of 5 instead of 2 would look like this:
To better understand Amdahl's law I will try to illustrate how the law is derived.
First of all, a program can be broken up into a non-parallelizable part B, and a parallelizable part 1-B, as illustrated by this diagram:
Note: You get 1 mark for identifying the task, and 1 mark for identifying the reason:
Answer:
i.e. d is calculated in Task 2, so you can't run Task 3 until Task 2 has been executed
Answer:
Total time (on a single processor) = 16 hours
80% of algorithm can be run in parallel
i.e. 80% of 16 hrs = 12.8hrs (or 12hrs 48mins)
So to calculate the time taken to run the parallel bit = 12.8hrs / 8 processors
= 1.6hrs or 1hr 36mins
What is meant by parallel processing?
Two or more processors working together to perform a single task.
How does parallel processing carry out a single task?
The task is split into smaller sub-tasks (threads).
These tasks are executed simultaneously by all available processors (any task can be processed by any processor)
What are the limiting factors of parallel processing?
More complex to program
Multiple processors may not be available
Software may not allow parallel processing
Advantages may be minimal due to improved processing speed
Sequential processing may still be important so limit to speed gained
Not all tasks are suitable for parallel processing
May be less efficient overall due to introducing additional functions not needed in an equivalent sequential program.
Parallel computing is a form of computation in which many calculations are carried out simultaneously
It operates on the principle that large problems can often be divided into smaller ones, which are then solved concurrently (at the same time)
Parallel computer programs are more complex to design and to write than sequential ones
Concurrency introduces several new classes of potential software bugs
Race conditions are the most common class of potential software bug
Communication and synchronisation between the different subtasks are typically some of the greatest obstacles to getting efficient parallel program performance
1 mark for each correct calculation for P = 0.5 and P = 0.9 to a maximum of 4 marks.
Answer:
• Calculation of increase in speed for P = 0.5
10 processors, increase = 1.82
1000 processors, increase = 1.99
• Calculation of increase in speed for P = 0.9
10 processors, increase = 5.26
1000 processors, increase = 9.91
You can see the mark scheme answer above, but how were those figures calculated?
Let's break them down, using the formula in the question:
1. Calculation of increase in speed for P = 0.5, for 10 processors:
2. Calculation of increase in speed for P = 0.5, for 1000 processors:
3. Calculation of increase in speed for P = 0.9, for 10 processors:
4. Calculation of increase in speed for P = 0.9, for 1000 processors:
1 mark for each correct point to a maximum of 3 marks.
Indicative content:
At 50% the significant increase in the number of processors produces a relatively small increase in speed.
At 90% the same increase in number of processors provides a much greater relative increase in speed.
At a low % of parallel processing there is limited benefit in increasing the number of processors as the 50 % serial fraction is significant and limits the potential of parallelisation.
At higher % of parallel processing the benefits are much greater, but there are practical limitations that will marginalise benefits arising from using very large numbers of processors
The level of parallelisation achieved in the software is generally more significant than the number of processors used. The significance increases as the level of parallelisation achieved in the software increases.
Assembly language programming - Write simple programs in assembly language and demonstrate how these programs could be executed.
June 2019
NOTES:
You must only use the commands which are given to you in the question. You can change the registers used in the command - for example, you could write IN R, IN S, IN T or IN U, depending on the registers you are using in your algorithm.
You may not have to use all the commands given
Commands generally work right to left, unless otherwise specified - the description will help you. For example,
ADD R, S will take the value of S and add it to R, storing the total in R.
First thing to do is to choose which registers you are going to use to store the various values needed for the algorithm.
R = rainfall readings count
S = rainfall total
T = current input value
U = (not needed for this algorithm)
If you choose different registers for different variables, it does not matter, as long as you use them correctly in your Assembly code.
2. Second thing to do is to think about how you can use a loop to allow the input of multiple rainfall values, so they can be totalled up.
3. Third thing to do is to check what output is required, so you can calculate those values and then output them.
In this algorithm, we need to output the Total Rainfall and the number of readings collected.
How would this algorithm look in a high level language?
dim RainfallCount as Integer = 0 {initialise rainfall readings count}
dim TotalRainfall as Integer = 0 {initialise rainfall total}
dim Rainfall as Integer = 0 {initialise current input value}
Input Rainfall {input data value}
While RainfallCount <> -1 {loop through all rainfall values}
RainfallCount = RainfallCount + 1{incr rainfall count by 1}
TotalRainfall = TotalRainfall + Rainfall{add rainfall to total}
Input Rainfall {input data value}
End Loop
Output TotalRainfall {output total}
Output RainfallCount {output rainfall count}
Sample answer in Assembly Language:
LOD R, 0 {initialise rainfall
readings count}
LOD S, 0 {initialise rainfall
total}
LOOP: IN T {input data value}
JNG T, FINISH {end if negative rogue
value}
NOTE: Rogue value is -1 in this algorithm
INC R {incr rainfall count by 1}
ADD S, T {add rainfall to total}
JMP LOOP {return to start of the loop}
FINISH: OUT S {output total}
OUT R {output rainfall count}
In this question, they do not ask us (or give the commands) to use registers, so we can use the DAT command to store data in a variable in memory, instead.
How would this algorithm look in a high level language?
dim studentmark as Integer {initialise studentmark}
dim passmark as Integer {initialise passmark}
dim result as Integer {initialise result}
Input studentmark {input studentmark}
Input passmark {input passmark}
If studentmark >= passmark {compare studentmark and passmark}
Output '1' {student has passed}
Else
Output '0' {student has failed}
End If
Sample answer in Assembly Language:
INP {input student mark}
STA mark {store student mark in variable mark}
INP {input passmark}
STA passmark {store passmark in dat variable}
LDA mark {put value of mark into acc}
SUB passmark {subtract passmark from mark(in accumulator)}
STA result {store the contents of the accumulator in result}
BRP output1 {if mark is greater than passmark, go to output1}
BRA output2 {branch to output2}
output1 OUT 1 {output the value of 1}
HLT {end program}
output2 OUT 0 {output value of zero - student has failed}
HLT {end program}
mark DAT {declaration of variables using DAT}
passmark DAT
result DAT
Marking Allocation:
Networking - Identify and describe applications where connecting a portable device to a network is required.
Networking - Describe the hardware required to make a wireless connection and explain how this might be achieved using contemporary wireless technologies
What hardware is needed to connect a device to a network wirelessly?
Wireless Interface Card (accept Network Interface Card) in the device.
An available Wireless Access Point (WAP) to provide the connection.
Switch / Hub to connect the WAP.
Router to route the traffic to the Internet.
What network applications could be used if an employee connect wirelessly to a network?
File sharing – being able to upload and download files to the company’s servers.
Presentation Control – Being able to control slide content from a mobile device.
Email / Messaging – access to corporate email or internal messaging services.
Web browsing / Intranet – via the company Wi-Fi.
Network based apps e.g. VNC – either a corporate app or being able to view other screens via remote access.
The advancement of wireless technologies has allowed different types of devices to be created that can connect to the internet. In addition, wireless technology has also made it possible for devices to communicate with each other without the need for wires.
Wireless Technologies will include:-
Satellite Communication - Satellite communication is a crucial form of wireless communication. Satellites communicate by using radio waves to send signals to the antennas on the Earth. The antennas then capture those signals and process the information coming from those signals. There are three types of communication services that satellites provide: telecommunications, broadcasting, and data communications.
Infrared Communication - Used for data communications. In communications and networking, infrared light is used in wired and wireless operations. Remote controls use near-infrared light, transmitted with light-emitting diodes (LEDs), to send focused signals to home-entertainment devices, such as televisions and remote controls
Broadcast Radio - Radio is sound communication by radio waves, usually through the transmission of music, news, and other types of programs from single broadcast stations to multitudes of individual listeners equipped with radio receivers.
Microwave Communication - Microwaves are widely used in modern technology, for example in point-to-point communication links, wireless networks, microwave radio relay networks, radar, satellite and spacecraft communication, medical diathermy and cancer treatment, remote sensing, radio astronomy. Advantages are speed, distance, reliability and cost-effectiveness but disadvantages would include weather interference, health concerns and limited bandwidth.
Wi-Fi. - Most of us are familiar with the term “Wi-Fi”, but what is “Wi-Fi sensing”? Wi-Fi sensing is the ability of devices to detect the presence of Wi-Fi networks and to gather information about them. This information can be used to determine the location of Wi-Fi networks, to identify the type of network, and to estimate the number of devices that are connected to the network. Wi-Fi sensing has several potential applications. For example, it could be used to help people find available Wi-Fi networks in their area. It could also be used to help businesses understand how their customers are using Wi-Fi, and to troubleshoot Wi-Fi problems.
The benefits of this technology are manifold. For example, Wi-Fi sensing could be used to automatically turn lights off when there’s no one in the room or to trigger an alarm when a person or object enters a restricted area. The possibilities are endless, and the technology is still in its early stages of development.
One potential issue with Wi-Fi sensing is privacy. The technology can be used to track the movements of people and objects, which raises concerns about how this data will be used and who will have access to it
Mobile Communication Systems - A millimeter-wave is a type of electromagnetic radiation with a wavelength in the millimeter range used in 5G. 5G is the fifth generation of wireless technology, and it is expected to bring a major change to the mobile landscape. It is the latest generation of wireless technology that is expected to provide significantly faster speeds and lower latency than current 4G networks. Millimeter waves are well-suited for 5G applications due to their large bandwidth and ability to penetrate obstacles (not good as microwave spectrum
4G offers many benefits over previous generations of mobile networks. It provides much higher data rates, allowing users to enjoy a better experience when streaming video or downloading files. 4G also has improved performance in terms of latency, meaning that there is less delay when sending or receiving data .
Bluetooth Technology - Bluetooth is a short-range wireless technology standard that is used for exchanging data between fixed and mobile devices over short distances and building personal area networks. In the most widely used mode, transmission power is limited to 2.5 milliwatts, giving it a very short range of up to 10 metres.