Computer Sciences Dept.

Kai (Tommy) Zhao

Email: kzhao32 'at' cs 'dot' wisc 'dot' edu
Computer Architect & Software Engineer
Department of Computer Sciences
University of Wisconsin-Madison


  • Exploring Proximate, a multi-tile programmable accelerator

     CS 758: Adv Topics in Computer Architecture: Programming Multicore Processors, Fall 2016

    • Implemented parallel workloads on different parts of a Proximate compute tile
    • Investigated scalability and speedup to improve hardware design choices
  • Lock Elision and Transactional Memory Predictor in Hardware

     CS/ECE 757: Advanced Computer Architecture II: Parallel Computer Architecture, Spring 2016

    • Transactional memory can perform better than locks depending on how often data conflict occurs in the critical section for multithreaded programs
    • Used gem5 to simulate various lock elision and transactional memory predictor
    [Lock Elision and Transactional Memory Predictor in Hardware]
  • Superscalar Instruction Fetcher based on Branch Predictor Confidence

     CS/ECE 752: Advanced Computer Architecture I, Fall 2014

    • Researched and developed methods for extracting confidence from branch predictor
    • Used gem5 to simulate fetching instructions from both branch paths (taken and not taken) for various issue widths and low branch predictor confidence
    • Achieved up to 7 percent speedup by fetching based on branch predictor confidence
    [Superscalar Instruction Fetcher based on Branch Predictor Confidence]
  • Tronsisters-32, a Nintendo Entertainment System (NES) Clone

     ECE 554: Digital Engineering Laboratory, Fall 2015

    • Designed an Instruction Set Architecture (ISA) for computation and graphics
    • Used Verilog for FPGA programming to create a NES Clone and support the ISA
    • Used assembly language in the ISA to write Tron, DDR, and Pac-Man
  • WISC-SP13, a pipelined microprocessor with cache

     CS/ECE 552: Introduction to Computer Architecture, Spring 2016

    • Used Verilog for hardware implementation to support WISC-SP13 ISA
    • Implemented pipelining, forwarding, data and instruction set associative cache, register file bypassing, branch predictor, and carry-lookahead adders
  • Line Following Robot

     ECE 551: Digital System Design and Synthesis, Spring 2015

    • Used Verilog for FPGA programming to control a motored robot to follow a (curved) line until it reaches the specified barcode station
    • Verilog modules includes UART, command controller, and motion controller
    [Line Following Robot]
  • Bonsai, a distributed data collection and storage system for data processing

     CS 736: Advanced Operating Systems, Fall 2014

    • Scalable data collection in a ring structure by implementing a circular buffer for stored data with a token as synchronization logic
    • Real-time data processing in a tree structure by multicasting map requests to backends and reducing results towards the frontend
  • Parallel VLSI gate placement CAD tool on GPU

     CS/ECE/EMA/ME 759: High Performance Computing for Applications in Engineering, Fall 2015

    • Placing connected gates closer to each other results in shorter wires, which in turn reduces delay and power consumption.
    • Implemented gate placement algorithms for obtaining optimal wire length using CUDA and comparing it with a CPU implementation
    • Achieved 6400 speedup with an optimized GPU implementation over CPU
    [Parallel VLSI gate placement CAD tool on GPU]
  • Pokemon Pallet Town Graphics

     CS 559: Computer Graphics, Spring 2017

    • 3D rendition of Pokemon FireRed Version of Pallet Town
    • NPCs look like human figures and have hierarchical modeling movements
    • Many textures for buildings, objects, and signs
    • View angles and TimeOfDay affects lighting
    • Bump mapping on grass for a more realistic 3D visualization
    • Pokemons patrol in piecewise Bezier and Hermite curves
    [Pallet Town Graphics]
  • Level Up Bound, a pattern-puzzle obstacle game

     CS 107: Introduction to Computing and Programming, Fall 2011

    • Level Up Bound was an action pattern-puzzle obstacle game created by Mp(U) for Blizzard Starcraft in 2001.
    • I remade Level Up Bound for Scratch, currently having 15 levels.
    [Level Up Bound]

More projects listed under [courses].

Computer Sciences | UW Home