Monday, January 28, 2008

[HiPerCoPS] System Diagram

Over the weekend I came up with a preliminary system diagram for the project. It's still pretty high-level, but it includes three modes of functional unit creation:
  1. Library Based
  2. Algorithmic
  3. User Specified
The library based mode will be utilized for common functional units. For instance, multipliers and adders with simple dimensions will be found in most applications. Instead of spending time and resources to create these functional units dynamically, a predetermined optimal layout can be looked up from a library.

For functional units with well-known behaviors but uncommon dimensions, the application can determine their layout by using an algorithm. This saves the user time and effort by allowing them to ignore the inner workings of the functional unit.

The user specified mode requires the formatted user input to define the exact layout of the functional unit. This will be good for designs that don't fit into either of the other categories.

Tuesday, January 22, 2008

[HiPerCoPS] Goals for 1/29

I met with Dr. Delgado today, and discussed the next steps for my project. These are my goals for the coming week:
  1. Create a high-level flowchart showing the system components.
  2. Focus on the steps for creating functional units.
  3. Re-read Mitch's papers on the Washington architecture and multipliers.
  4. Create a diagram showing the basic structural hierarchy.
  5. Work on algorithms for multiplier creation.

[HiPerCoPS] Research Website

Since last week, I've been using a website hosted by Google Code to perform all of my research-related work. You can use this site to see what I've been up to, download the most recent version of my code, or even make comments on the site's wiki. If anyone is interested in being added as a collaborator to this project (which is also possible), just shoot me an email. I'm sure I can use all/any of the help I can get.

Here's the URL: http://hipercops-washington.googlecode.com/

Monday, January 21, 2008

[HiPerCoPS] Java It Is!

I finished my programming language selection today. The analysis I performed is outlined below, but it might be changed in the future. The most current version is kept here.

LanguageSelection  
Choosing the project's implementation language.

Introduction

After completing the design phase, the system will have to be implemented using a computer programming language. Different programming languages offer different trade-offs, so selecting the right language for this application can improve implementation speed and application performance.

The Candidates

The following programming languages were selected because they are standard, tried-and-true tools used by most of academia and industry.

The Selection Process

The selection process will include the following steps:

  1. List the pros and cons of each language.
  2. Assign a score of +1 to each pro to get the ProScore.
  3. Assign a score of -1 to each con to get the ConScore.
  4. The language's overall score is ProsScore + ConScore = LangScore.
  5. The language with the highest overall LangScore will be selected.

C (LangScore: -1)

Pros (ProScore: 3)

  1. Very familiar language.
  2. Fast program execution.
  3. Highly standardized.

Cons (ConScore: 4)

  1. Not object oriented.
  2. Weak type strength.
  3. GUI support only in Linux?
  4. Type unsafe.

C++ (LangScore: 3)

Pros (ProScore: 6)

  1. Familiar language.
  2. Object oriented.
  3. Good for multi-platform applications.
  4. Strong type strength.
  5. Standardized.
  6. Nominative compatibility.

Cons (ConScore: 3)

  1. No simple GUI tools.
  2. Multi-threading unsupported.
  3. Type unsafe.

C# (LangScore: 4)

Pros (ProScore: 7)

  1. Language of the existing simulator.
  2. Designed for rapid development.
  3. Fast and easy GUI implementation.
  4. Object Oriented.
  5. Strong type strength.
  6. Type safe.
  7. Standardized.

Cons (ConScore: 3)

  1. Targeted for Windows only.
  2. Unfamiliar syntax.
  3. Multi-threading unsupported.

Java (LangScore: 6)

Pros (ProScore: 8)

  1. Cross-platform.
  2. Object Oriented.
  3. Multi-threading is supported.
  4. GUI tools are standard.
  5. Widely used in industry (would make me more marketable).
  6. Strong type strength.
  7. Type safe.
  8. Nominative compatibility.

Cons (ConScore : 2)

  1. Unfamiliar syntax.
  2. Not standardized.

Conclusion

Java received the highest overall LangScore, so it will be used to implement the system's modules and functions.

References

I used the following web pages to inform my decision:

Comparison of Programming Languages

Programming of Programming Languages

Computer Language Shootout Scorecard


[HiPerCoPS] SRS Continues, Language Choice

I'm working on the second draft of the software specifications requirements document. I hope to have it done by tomorrow so I can deliver it to Dr. Delgado at our weekly meeting.

One of the first design choices I'll have to make is the programming language to be used. At the moment, I'm leaning toward Java, but I'll do a formal writeup of my choice soon.

Tuesday, January 15, 2008

[HiPerCoPS] SRS, Version 1.0

Right now I'm working on the first iteration of my Software Requirements Specification (SRS). It's really rough so far, but the details will become more clear as the project progresses. It's already forced me to think about a lot of aspects of the application that I haven't considered before.

Monday, January 14, 2008

[HiPerCoPS] Software Engineering

For this project, I'm trying to do a really good job of engineering my code. I want to plan everything carefully so I don't run into too many dead ends. If I can be logical and methodical, it will save me a lot of confusion and frustration over time. With this in mind, I went to the library today and checked out a bunch of book on software engineering. My favorite one of the bunch is Software Engineering by I. Sommerville.  This is a really nice book because it's thin enough (only about 270 pages), but provides good coverage on the subject. The author's style is pleasant, and he uses just enough words to get his point across. The concepts are arranged in a methodical way, making the text extremely readable. I think my copy is the first edition, because I looked the book up online and those copies are much thicker. For my purposes, though, it's perfect.

Sunday, January 13, 2008

[HiPerCoPS] Research Blog

Here at WSU, I'm part of the High Performance Computer Systems Research Group (HiPerCoPS). While I perform my research, I'll use this blog to record my thoughts and my progress.