Question
Michael Flynn defined the terms SISD, SIMD, MISD, and MIMD to represent certain classes of computer architectures that have been built or at least considered.
Michael Flynn defined the terms SISD, SIMD, MISD, and MIMD to represent certain classes of computer architectures that have been built or at least considered. Tell what each of these abbreviations stands for, describe the general characteristics of each of these architectures, and explain how they are similar to and different from one another. If possible, give an example of a specific computer system fitting each of Flynn's classifications. 3. What is the main difference between a vector computer and the scalar architectures that we studied in Chapters 3 and 4? Do vector machines tend to have a high or low degree of generality as defined in Section 1.4? What types of applications take best advantage of the properties of vector machines? 4. How are array processors similar to vector processors and how are they different? Explain the difference between fine-grained and coarse-grained array processors. Which type of array parallelism is more widely used in today's computer systems? Why? 5. How are graphics processing units (GPUs) similar to, yet different from, SIMD array processors? What types of computational problems are well suited to run on GPU-accelerated systems? 6. Explain the difference between multiprocessor and multicomputer systems. Which of these architectures is more prevalent among massively parallel MIMD systems? Why? Which architecture is easier to understand (for programmers familiar with the uniprocessor model)? Why? 7. Explain the similarities and differences between UMA, NUMA, and COMA multiprocessors. 8. What does "cache coherence" mean? In what type of computer system would cache coherence be an issue? Is a write-through strategy sufficient to maintain cache coherence in such a system? If so, explain why. If not, explain why not and name and describe an approach that could be used to ensure coherence. 9. What are the relative advantages and disadvantages of write-update and write-invalidate snoopy protocols? 10. What are directory-based protocols, and why are they often used in CC-NUMA systems? 11. Explain why synchronization primitives based on mutual exclusion are important in multiprocessors. What is a read-modify-write cycle, and why is it significant? 12. Describe the construction of a cluster system (once commonly referred to as a "Beowulf cluster" after the NASA project that spawned the idea). Architecturally speaking, how would you classify such a system? Explain. 13. Describe the similarities and differences between circuitswitched networks and packet-switched communications networks. Which of these network types is considered static, and which is dynamic? Which type is more likely to be centrally controlled, and which is more likely to use distributed control? Which is more likely to use asynchronous timing, and which is more likely to be synchronous? 14. What type of interconnection structure is used most often in small systems? Describe it and discuss its advantages and disadvantages. 15. Describe the operation of a static network with a star topology. What connection degree do its nodes have? What is its communication diameter? Discuss the advantages and disadvantages of this topology. 16. How are torus and Illiac networks similar to a two-dimensional nearest-neighbor mesh? How are they different? 17. Consider a message-passing multicomputer system with 16 computing nodes. a. Draw the node connections for the following connection topologies: linear array, ring, two-dimensional rectangular nearestneighbor mesh, binary n-cube. b. What is the connection degree for the nodes in each of the above interconnection networks? c. What is the communication diameter for each of the above networks? d. How do these four networks compare in terms of cost, fault tolerance, and speed of communications? (For each of these criteria, rank them in order from most desirable to least desirable.)
Implement a Haskell function varmap::String -> [(String,Int)]> Int, based on the denotational semantics function VARMAP, that takes an identifier and a list of identifier-value pairs and returns the value associated with the identifier in the list. To accommodate Haskell's static typing, you may assume the values are non- negative integers and use -1 in place of undef. You may also return-1 as an error code if the identifier is not in the list. 3. Implement a Haskell function varmap::String -> [(String,Int)] -> Int, based on the denotiational- semantics function VARMAP, that takes an identifier and a list of identifier-value pairs and returns the value associated with the identifier in the list. To accommodate Haskell's static typing, you may assume the values are non-negative integers and use-1 in place of undef. You may also return-1 as an error code if the identifier is not in the list.
Step by Step Solution
There are 3 Steps involved in it
Step: 1
Get Instant Access to Expert-Tailored Solutions
See step-by-step solutions with expert insights and AI powered tools for academic success
Step: 2
Step: 3
Ace Your Homework with AI
Get the answers you need in no time with our AI-driven, step-by-step assistance
Get Started