الفهرس | Only 14 pages are availabe for public view |
Abstract Multimedia applications, simulators and machine learning algorithms are examples of computer programs that require doing a set of repeated calculations over a large set of operands such as vectors and arrays. Improving the performance of such applications requires increasing the parallelism of those operations. Although replicating the CPU functional units would improve the performance, it would require increasing both the space and the complexity of the CPU. Adding to that, most of these applications usually requires less precision than the CPU precision, which results in computational power waste.Almost all commercial processors nowadays have a vector extension which is respon- sible for executing a chain of instructions over a large set of operands efficiently. This extension is usually composed of multiple lanes, where each lane contains a variety of functional units. It also contains a large register file to exploit the locality of operands in executing these vector operations. However, not all these CPUs exploit the reduced precision we mentioned earlier.In this thesis, RISC-V, a modern open-source RISC CPU, is extended to support integer operations fracturing within the Hwacha vector extension. The fracturing is done on two main components, the ALU and the integer multiplier unit. This modification allows up to two 32-bit operations and four 16-bit operations. The modification is implemented in Scala language on top of the Chisel Hardware framework. It is also designed with generality in mind, allowing any level of fracturing as long as the processor have the instruction support for that level of fracturing.The thesis also goes through the implementation of different possible methods of fracturing integer multipliers, to suit different requirements of timing and fabrication space. |