Minecraft wiki entry for Cobblestone_farming, associated text: Optional secondary pistons. Since pistons can only push a maximum of 12 blocks, the core will only produce at most 13 cobblestone blocks at a time. This can be greatly increased with secondary pistons that guide the row of cobblestone in other directions. Like the core piston, the idea is to get the fresh cobblestone out of the way so that more can be created. A line of secondary pistons may also be used to move the blocks directly into self-repairing structures. Secondary pistons can be triggered by the same clock or detection circuit as the core piston, but this can be noisy if there are many of them. Alternatively, they can get their own clock or detection circuit.
If nether quartz is available, the "smart piston" circuit shown here will automatically redirect a stream of blocks from the side (that is, into or out of the screen) or from below. It works because the note block triggers a block update any time the block beneath it changes. The observer detects this and triggers the piston. Since this leaves the space empty, the next block will repeat the process. The smart piston will stop when its output stream is full or blocked, but once some blocks have been mined, it can be restarted by clicking the note block.