Can we set the fixed size for both plan cache and data cache? As far as I know, SQL Server automatically manages the size for the components of buffer pool. I wonder if it is possible to set pre-defined size for both plan cache and data cache?
No. 

You can set Minimum &amp; Maximum server memory to control the range of total memory utilization by the Instance, but there is not fine grained control for the constituent parts that make up "server memory"