Skip to content

Commit

Permalink
feat: update LO for software
Browse files Browse the repository at this point in the history
  • Loading branch information
natalieagus committed Jul 22, 2024
1 parent c11c339 commit a5b422d
Show file tree
Hide file tree
Showing 8 changed files with 33 additions and 35 deletions.
4 changes: 2 additions & 2 deletions docs/Software/i_betacpudiagnostics.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@ Singapore University of Technology and Design
{:.highlight-title}
> Detailed Learning Objectives
>
> 1. **Understand Interrupt Handling in Beta CPU**
> 1. **Implement Interrupt Handling in Beta CPU**
> - Learn about the role and types of interrupts in the Beta CPU, including synchronous (software-driven) and asynchronous (hardware-driven) interrupts.
> - Examine how interrupts are sampled and processed within the CPU's control system to ensure timely and correct response to external and internal events.
> 2. **Diagnose Faults in the CPU Datapath**
> - Develop skills in identifying and diagnosing faults within the Beta CPU's datapath using diagnostic software tools.
> - Understand how to use simple test programs to isolate and identify specific faulty components within the CPU.
> - Explain how to use simple test programs to isolate and identify specific faulty components within the CPU.
> 3. **Implement Fixes for Faulty Datapaths**
> - Explore strategies for making code adjustments and changes to bypass or correct faulty components within the Beta CPU's architecture.
> - Gain practical experience in altering CPU behavior through modifications in the control logic to handle specific types of errors or malfunctions.
Expand Down
10 changes: 5 additions & 5 deletions docs/Software/j_assemblersandcompilers.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,21 @@ Singapore University of Technology and Design
{:.highlight-title}
> Detailed Learning Objectives
>
> 1. **Understand the Concept of Abstraction in Software Engineering**
> 1. **Appreciate the Concept of Abstraction in Software Engineering**
> - Learn the definition and importance of abstraction in software engineering and computer science.
> - Understand how abstraction helps in managing complexity by hiding unnecessary details and allowing focus on higher-level problems.
> - Explain how abstraction helps in managing complexity by hiding unnecessary details and allowing focus on higher-level problems.
> 2. **Explore Software Tools for Abstraction**
> - Examine different tools and software that provide layers of abstraction in computing, including assemblers, compilers, and interpreters.
> - Understand the role of operating systems and applications in abstracting resource management, security details, and other underlying complexities.
> - Explain the role of operating systems and applications in abstracting resource management, security details, and other underlying complexities.
> 3. **Learn About Language Abstraction Levels**
> - Study the progression from machine language to high-level programming languages through assembly language, and how each level abstracts the complexity of the underlying hardware.
> - Discover how language constructs like subroutines, modules, and polymorphism further abstract programming tasks.
> 4. **Understand Assemblers and Their Role in Programming**
> 4. **Get Familiar with Assemblers and Their Role in Programming**
> - Define what an assembler is and how it functions as a primitive compiler to translate assembly language into machine language.
> - Learn about UASM and its role in providing a symbolic representation for the Beta assembly language.
> 5. **Differentiate Between Interpreters and Compilers**
> - Compare and contrast interpreters and compilers in terms of how they execute high-level languages.
> - Understand the trade-offs between these tools in terms of execution speed, error detection, and ease of debugging.
> - Explain the trade-offs between these tools in terms of execution speed, error detection, and ease of debugging.
> 6. **Translate High-Level Constructs to Machine Language**
> - Practice translating high-level language constructs, such as variable declarations, arrays, conditionals, and loops, into Beta machine language.
> - Explore the strategies for optimizing the translation process to reduce instruction count and memory operations.
Expand Down
13 changes: 7 additions & 6 deletions docs/Software/k_stackandprocedures.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,25 @@ Singapore University of Technology and Design
{:.highlight-title}
> Detailed Learning Objectives
>
> 1. **Understand Function Calls and Reusability**
> 1. **Comprehend Function Calls and Reusability**
> - Learn why functions are essential for code reusability and organization.
> - Understand the basic structure and operation of functions, including passing parameters, returning values, and the call and return mechanism.
> - Explain the basic structure and operation of functions, including passing parameters, returning values, and the call and return mechanism.
> 2. **Explore the Procedure Linkage and Stack Mechanism**
> - Study the procedure linkage concept to manage function calls and returns efficiently.
> - Understand the role of the stack in function calls, particularly in managing local variables, parameters, and return addresses.
> - Explain the role of the stack in function calls, particularly in managing local variables, parameters, and return addresses.
> 3. **Learn About Stack Operations**
> - Understand how to use stack operations like PUSH and POP to manage function call contexts.
> - Learn how to use stack operations like PUSH and POP to manage function call contexts.
> - Learn the importance of the stack pointer (SP), base pointer (BP), and linkage pointer (LP) in function execution.
> 4. **Procedure Linkage Convention**
> - Explore the detailed procedure linkage convention, which dictates how functions should manage calling and returning from functions.
> - Learn the sequence of operations a function caller and callee must perform to ensure the correct execution flow and state preservation.
> 5. **Stack Frame Management**
> - Understand how to allocate and deallocate stack frames to manage local variables and function arguments.
> - Explain how to allocate and deallocate stack frames to manage local variables and function arguments.
> - Study the impact of stack frame management on function calls, including nested calls and recursion.
> - Analyze and draw the stack frame details of a recursive procedure call.
> 6. **Implement Functions with Multiple Arguments**
> - Learn how to handle functions with multiple arguments using the stack.
> - Understand the sequence of stacking arguments in reverse order and cleaning up the stack after function execution.
> - Explain the sequence of stacking arguments in reverse order and cleaning up the stack after function execution.
> 7. **Debug and Manage Function Calls**
> - Use debugging tools and techniques to inspect the call stack and understand function execution states.
> - Learn about common pitfalls in function implementation, such as dangling references and stack mismanagement.
Expand Down
18 changes: 6 additions & 12 deletions docs/Software/l_memoryhierarchy.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,30 +30,24 @@ Singapore University of Technology and Design
> - Introduces Static Random-Access Memory (SRAM) and Dynamic Random-Access Memory (DRAM) as two primary technologies for creating memory cells.
> - Describes the construction and operation of SRAM and DRAM, including the processes of reading from and writing to these memory types.
> - Highlights the volatility of these memory types and the need for power to retain data.
> 3. **SRAM vs DRAM Characteristics**
> 3. **Explore SRAM vs DRAM Characteristics**
> - Outlines the differences in cost, speed, and capacity between SRAM and DRAM.
> - Provides a detailed explanation of how data is accessed and managed in both SRAM and DRAM cells.
> 4. **Application of Memory Technologies**
> 4. **Discuss Application of Memory Technologies**
> - Discusses the practical use of SRAM and DRAM in modern computing, particularly in the context of consumer-grade PCs and CPU caches.
> - Explains the role of the cache in enhancing processing speed by storing frequently accessed data closer to the CPU.
> 5. **Understanding Disk Storage**
> - Examines the mechanics of hard disk drives (HDDs) and their structure, including tracks, sectors, and the function of the read/write head.
> - Explains the non-volatile nature of disk storage and its implications for data retrieval and storage.
> 6. **The Memory Hierarchy Concept**
> 5. **Comprehend The Memory Hierarchy Concept**
> - Introduces the idea of a memory hierarchy to achieve an optimal balance between speed, cost, and capacity.
> - Describes the roles of various storage types within this hierarchy, including registers, cache, main memory (RAM), and disk storage.
> 7. **Locality of Reference**
> 6. **Recognise Locality of Reference**
> - Discusses the principle of locality of reference, which predicts that certain memory locations are more likely to be accessed repeatedly over short periods.
> - Explains how this principle supports the effective use of cache memory.
> 8. **Cache Operation and Management**
> 7. **Explain Cache Operation and Management**
> - Details the operation of cache memory, including the concepts of cache hits and misses.
> - Describes the processes involved when the cache does not contain requested data, including fetching data from main memory or disk.
> 9. **Cache Design Types: Fully Associative and Direct Mapped**
> 8. **Get Familiar with Basic Cache Design Types: Fully Associative and Direct Mapped**
> - Compares fully associative and direct mapped cache designs.
> - Discusses the advantages and challenges associated with each design, including speed, cost, flexibility, and contention issues.
> 10. **Summary and Further Learning**
> - Concludes with a summary of the key points discussed in the chapter.
> - Points to additional resources and videos for extended learning on the topics covered.
>
> These notes are designed to give students a thorough understanding of the critical components and concepts related to memory technologies in computing systems, emphasizing the practical applications and the importance of memory hierarchy in achieving efficient computing operations.
Expand Down
6 changes: 3 additions & 3 deletions docs/Software/m_cacheissues.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ Singapore University of Technology and Design
> - Discuss the pros and cons of each type concerning performance, cost, and risk of contention.
> 4. **Explore Associativity in Caches**
> - Define what associativity is in the context of caches and its importance in reducing contention.
> - Understand N-Way Set Associative Cache as a hybrid approach between DM and FA caches.
> - Recognise N-Way Set Associative Cache as a hybrid approach between DM and FA caches.
> 5. **Dive into Cache Replacement Policies**
> - Examine common replacement strategies like Least Recently Used (LRU), Least Recently Replaced (LRR), and Random replacement.
> - Discuss the hardware overhead and application scenarios for each replacement policy.
Expand All @@ -45,9 +45,9 @@ Singapore University of Technology and Design
> - Analyze the impact of block size on cache efficiency and performance.
> - Explain the trade-offs between fetching large blocks (pros) and the risk of fetching unused words (cons).
> 8. **Learn About Cache Helper Bits**
> - Understand the function of helper bits like Valid, Dirty, and LRU bits in cache operations.
> - Explain and appreciate the function of helper bits like Valid, Dirty, and LRU bits in cache operations.
> - Discuss the storage requirements and implications of each type of helper bit on cache design.
> 9. **Cache Performance Metrics and Benchmarking**
> 9. **Perform Cache Performance Metrics and Benchmarking**
> - Learn how to measure cache performance using HIT and MISS rates.
> - Use benchmarks to determine the effectiveness of different cache configurations and replacement policies.
>
Expand Down
8 changes: 5 additions & 3 deletions docs/Software/n_virtualmemory.md
Original file line number Diff line number Diff line change
Expand Up @@ -23,24 +23,25 @@ Singapore University of Technology and Design
{:.highlight-title}
> Detailed Learning Objectives
>
> 1. **Understand the Concept of Memory in Computing Systems**
> 1. **Understand the Concept of Physical Memory in Computing Systems**
> - Explain the differences between a program and a process in terms of memory usage.
> - Describe how executable instructions and stack allocations influence process memory structure.
> 2. **Examine the Role and Functionality of Virtual Memory**
> - Define virtual memory and discuss its significance in modern computing.
> - Explore how virtual memory enables the illusion of a large memory space on systems with limited physical memory.
> 3. **Learn About Memory Paging and Page Management**
> - Understand the concept of paging as a method to manage memory efficiently.
> - Explain the concept of paging as a method to manage memory efficiently.
> - Describe the structure of a page and how it facilitates efficient data transfer between memory and storage.
> 4. **Investigate the Process of Address Translation Using the MMU**
> - Explain the role of the Memory Management Unit (MMU) in translating virtual addresses to physical addresses.
> - Identify the components of the MMU and their functions in the context of address translation.
> 5. **Explore the Mechanisms of Demand Paging**
> - Define demand paging and discuss its role in memory management.
> - Analyze the process of handling page faults and the criteria for replacing pages in memory.
> 6. **Context Switching in Operating Systems**
> 6. **Explain Context Switching in Operating Systems**
> - Discuss the concept of context switching and its importance in multitasking environments.
> - Explain how the operating system manages multiple processes through context switching.
> - Analyse the benefits and drawbacks of context switching
>
> These learning objectives aim to equip students with a comprehensive understanding of how virtual memory and related concepts function within computer systems, emphasizing their role in managing limited physical resources effectively.
Expand Down Expand Up @@ -466,6 +467,7 @@ The state of the physical memory after **both** instructions are executed in seq

## [Context Switching](https://www.youtube.com/watch?v=19wS4GC6mbQ&t=3411s)

{: .new-title}
> Context Switching
>
Expand Down
3 changes: 2 additions & 1 deletion docs/Software/o_virtualmachine.md
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Singapore University of Technology and Design
> - **Explore Hardware Requirements for OS Multiplexing**
> - Analyze the essential hardware features that support OS multiplexing.
> - Discuss the mechanisms like interrupts and dual mode operation that ensure efficient process management.
> - **Understand Synchronous and Asynchronous Interrupts**
> - **Revisit Synchronous and Asynchronous Interrupts**
> - Differentiate between synchronous and asynchronous interrupts and their roles in system operations.
> - Describe how these interrupts interact with the OS to handle program execution and error management.
>
Expand Down Expand Up @@ -215,6 +215,7 @@ The asynchronous interrupt handler is part of the Kernel's code which <span styl
The first few instructions of the interrupt handler typically saves current process states (`R0` to `R30` contents, PC state, stack, and others) in the **process table**.
#### Process Table
{: .new-title}
> Process Table
>
Expand Down
6 changes: 3 additions & 3 deletions docs/Software/p_asyncio.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,20 +24,20 @@ There's no pre-recorded video for this chapter as the file that was uploaded on
> Detailed Learning Objectives
>
> - **Comprehend the Role of the Operating System Kernel in Multitasking**
> - Understand how the OS Kernel enables multitasking through rapid context switching.
> - Recognise how the OS Kernel enables multitasking through rapid context switching.
> - Explain the concept of processes running in isolated virtual machines.
> - **Identify the Functionality of I/O Devices in Relation to the CPU**
> - Describe how I/O devices operate asynchronously and independently of the CPU.
> - Recognize the slower operation speeds of I/O devices compared to the CPU.
> - **Understand I/O Request Handling by the Operating System**
> - **Outline I/O Request Handling by the Operating System**
> - Learn how I/O requests are handled asynchronously by the OS Kernel.
> - Explore the process of handling I/O requests through supervisor calls and interrupts.
> - **Explore the Mechanism of Supervisor Calls (SVC)**
> - Explain the SVC instruction and its role in facilitating process requests for Kernel services.
> - Analyze the execution flow from SVC invocation to service routine execution.
> - **Examine Asynchronous Input Handling**
> - Discuss how the OS Kernel manages asynchronous inputs from various I/O devices.
> - Understand the implementation and operation of an interrupt-driven system for I/O handling.
> - Explain the implementation and operation of an interrupt-driven system for I/O handling.
> - **Study Real-Time I/O Handling and Its Challenges**
> - Explore the concept of latency and deadlines in real-time I/O request handling.
> - Discuss the strategies to manage multiple interrupt requests effectively.
Expand Down

0 comments on commit a5b422d

Please sign in to comment.