In Evolutionary Computation (EC), it is difficult to maintain efficient building blocks and to combine them efficiently. In particular, the control of building blocks in the population of Genetic Programming (GP) is relatively difficult because of tree-shaped individuals and also because of bloat, which is the uncontrolled growth of ineffective code segments in GP. It has been reported that the parameter tuning for solving the above mentioned problems requires a significant amount of efforts. Aimed at utilizing building blocks efficiently, this paper presents a GP algorithm called “Genetic Programming with Multi-Layered Population Structure (MLPS-GP)”. MLPS-GP employs multi-layered population like the pyramid-like population and searches solutions using local search and crossover. The computational experiments were conducted by taking several classical Boolean problems as examples.