I live in a two-story townhouse where the first floor is ground-level on a slab. On the first floor, all air vents are either on the ceiling or at the very tops of the walls. Upstairs, the vents are on the floor.

When I have the heat or air conditioning on, the air flows heavily and healthily from the downstairs vents, so it's always warm in the winter and cool in the summer. Upstairs, though, the airflow is very weak, so it's cold in the winter and hot in the summer.

What could be causing this disparity of airflow? Do I need to have someone come out and do some cleaning or is there a more home-grown approach?