MCA · MCA C1001
Characteristics of computers: accuracy, performance, and limits
Understand strengths and limitations; calculate CPU time and speedup, identify bottlenecks, and benchmark meaningful workloads.
On this page
A fast system is useful only if it delivers the required result under the relevant conditions. Read Introduction to computers first for data and computation; The computer system explains the execution machinery behind the performance models.
What you will learn
Explain each characteristic with its limits; distinguish correctness, reliability, and security; derive CPU time and Amdahl speedup; compare latency, throughput, and algorithmic growth.
1. Characteristics: strengths with conditions
| Characteristic | Useful meaning | Important limit |
|---|---|---|
| Speed | Can execute many operations quickly | A slow algorithm or input/output bottleneck can dominate |
| Accuracy | Follows defined operations consistently | Bad data, bugs, overflow and rounding can give wrong results |
| Automation | Can carry out a programmed sequence with limited intervention | Requires correct setup and handling of exceptional cases |
| Diligence | Does not experience human boredom or fatigue | Hardware can fail and software can leak resources |
| Storage | Can retain and retrieve large amounts of data | Capacity is finite; durability needs backups and sound design |
| Versatility | Can perform many tasks by running different software | Hardware and software still constrain what is practical |
A computer does not automatically understand the intention behind an input. Even an AI application depends on representations, algorithms, training or rules, and an execution environment. Fluent output is not evidence that an answer is correct.
2. Deeper understanding expected at MCA level
Abstraction and layers
An abstraction exposes useful behaviour while hiding some details. A file interface lets you read and write data without manually controlling the storage device. A function lets a caller request a result without copying its implementation. Good abstractions reduce complexity, but they have contracts and costs.
When a file write fails, you may need to inspect permissions, free space, or the storage device. The lesson is not to memorise every implementation detail; it is to understand enough of the layer below to diagnose failures and make informed choices.
Latency, throughput, and bottlenecks
Latency is the time taken for a particular operation or request. Throughput is the amount of work completed per unit time. A server can increase throughput by handling more requests concurrently without reducing each request's latency.
Suppose one task spends 2 seconds computing and 8 seconds waiting for storage. Halving computation time reduces the total from 10 to 9 seconds: only a 10% reduction. The overall speedup is 10/9, approximately 1.11 times. Improving the fastest-looking component is not always the useful improvement.
Clock frequency counts cycles per second, not completed instructions or useful answers per second. Compare complete workloads, including memory behaviour, instruction mix, available parallelism, storage, and software. A clock-rate comparison alone is insufficient across different processors.
Calculate CPU time instead of guessing from GHz
For a simplified CPU execution model, total cycles equal instruction count multiplied by average cycles per instruction (CPI). Time equals cycles divided by clock frequency. Keep units consistent: 2 GHz is 2 billion cycles per second, not 2 billion completed useful tasks per second.
CPU time = instruction count × average CPI / clock frequency
Example A: 1,000,000 × 2 / 2,000,000,000 = 0.001 s
Example B: 1,000,000 × 3 / 3,000,000,000 = 0.001 sThese examples have equal modelled CPU times even though the clock rates differ. Across different architectures or compiler outputs, instruction counts can differ too. Real elapsed time can include waiting and other system effects. The formula organises reasoning; it is not a replacement for measuring a workload.
Derive the limit on improving only part of a task
Normalise the original execution time to 1. If fraction p is improved by factor s, that part now takes p/s; the unchanged part still takes 1 − p. New time is (1 − p) + p/s. Overall speedup is its reciprocal. This is Amdahl’s law for the stated fixed-workload assumptions.
When p = 0.8 and s = 4, new time is 0.2 + 0.2 = 0.4 and speedup is 2.5. Even if the improved part took no time, the remaining 0.2 would limit the speedup to 5. Communication overhead or a changed workload can invalidate the simple assumptions, so state them when using the model.
Algorithmic growth versus a constant-factor improvement
Suppose a simplified method performs n squared comparisons and another performs n comparisons. At n = 1000 their counts are 1,000,000 and 1000. Doubling the input multiplies the first count by four and the second by two. A ten-times faster processor cannot universally compensate for that difference as input grows.
This does not mean that an asymptotically better method always wins for every small input. Constants, memory access, preprocessing, and input properties matter. First check that both methods solve the same problem; then analyse growth and measure representative cases. Complexity is about resource growth, not a promise of a particular number of seconds.
Measure the right workload
Define the task, input size, output requirements, and environment. Separate startup from steady-state behaviour when that distinction matters. Record elapsed time, memory use, and relevant failure rates rather than one unexplained “speed” number. Repeat measurements enough to detect unstable results.
A benchmark that reads already-cached data may answer a different question from a first read after startup. An average response time can hide long tail delays. A faster answer is useless if the implementation silently drops required work or produces incorrect output.
Correctness, reliability, and security are different
A marks calculation can be arithmetically correct but unreliable if the result disappears after a crash. It can be reliable at storing records yet insecure if anyone can modify another student's marks. Ask separately whether the computation is correct, whether the service remains dependable, and whether access and data are protected.
Questions and answers
Easy: explain the idea. Medium: apply or compare it. Hard: analyse assumptions and trade-offs. Tags describe the question’s purpose; interview questions are original practice, not claims about a specific employer.
No. Clock frequency measures cycles per second. For a simplified single-threaded compute workload, CPU time depends on instruction count, average cycles per instruction, and clock rate. Memory delays, different instruction sets, compiler output, and workload behaviour also matter.
Compare the same useful task with controlled inputs and measured completion time. A higher frequency can help when other relevant conditions are comparable, but the number alone does not establish overall performance.
Normalise the original time to 1. The unchanged fraction remains 0.20; the improved fraction takes 0.80/4 = 0.20. New time is 0.40, so speedup is 1/0.40 = 2.5 times. The elapsed-time reduction is 60%, not 75%.
If only that 80% could become arbitrarily fast, the remaining 20% would limit speedup to 5 times. This calculation assumes the fractions describe the original workload and that the change adds no overhead or new bottleneck.
Yes. Batching or higher concurrency can increase work completed per second while causing an individual request to wait longer. At high load, queueing can increase latency even when the system remains busy and throughput is high.
Measure completion rate and response-time distribution separately. An average can conceal unusually slow requests. The correct optimisation target depends on whether the application needs interactive responsiveness, bulk processing, or both.
Hardware improvements often provide a roughly multiplicative change for a fixed task, while algorithmic growth determines how work scales with input size. If one simplified method requires n squared comparisons and another requires n comparisons, doubling n multiplies their work by four and two respectively.
Actual performance still depends on constants, memory access, implementation, and input properties. Do not choose solely by asymptotic notation for every small workload. Use complexity to reason about growth, then measure representative executions.
Some work must remain sequential. Tasks may also spend time communicating, synchronising, contending for memory, or waiting for I/O. An implementation must expose independent work before extra cores can help.
Even when work is parallelisable, load imbalance can leave cores idle. Identify the sequential fraction and overhead, and compare the same workload. Concurrency is about managing overlapping work; parallelism means some work is actually executing simultaneously.
No. Programmability does not remove limits of computability. In a sufficiently expressive general model, there is no algorithm that correctly decides, for every program and input, whether that program will eventually halt. This is the halting-problem limitation.
There are also resource limits for problems that are computable in principle. A method can require impractical time or memory. Keep “no general algorithm exists”, “this implementation is too slow”, and “we have not yet found a useful method” distinct.
Revision checkpoints
Explain the main mechanisms in your own words, reproduce the worked examples without looking, and answer the tagged questions before expanding their solutions. When an answer depends on assumptions, state them explicitly.
References and further reading
The supplied MCA syllabus defines the topic placement (Fundamentals of Computers, PDF page 9). The chapter explains its prerequisites and worked examples directly; the references support verification and optional further study. The explanations, examples, diagrams, and practice questions here are original teaching material.
- Harvard CS50, Lecture 0: introductory problem solving and binary representations.
- Operating Systems: Three Easy Pieces, Introduction to Operating Systems, by Remzi and Andrea Arpaci-Dusseau: processes, resource management, and persistence.
- Python documentation: floating-point limitations: representation error and numeric comparisons.
- Unicode Consortium: UTF encodings: bytes, code points, and encodings.
- Cornell computer architecture lecture: performance: performance metrics and Amdahl’s law.
- OSTEP: I/O devices: polling, interrupts, and DMA.
- MIT: automata, computability, and complexity: the boundaries of algorithmic computation.
Spot an error? Report it to Study Shelf with this page link.